{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "economic-solomon",
   "metadata": {
    "_cell_guid": "b1076dfc-b9ad-4769-8c92-a6c4dae69d19",
    "_kg_hide-input": false,
    "_kg_hide-output": true,
    "_uuid": "8f2839f25d086af736a60e9eeb907d3b93b6e0e5",
    "execution": {
     "iopub.execute_input": "2021-06-14T19:59:59.931346Z",
     "iopub.status.busy": "2021-06-14T19:59:59.921089Z",
     "iopub.status.idle": "2021-06-14T20:00:56.448098Z",
     "shell.execute_reply": "2021-06-14T20:00:56.447521Z",
     "shell.execute_reply.started": "2021-06-14T19:29:26.587192Z"
    },
    "papermill": {
     "duration": 56.552131,
     "end_time": "2021-06-14T20:00:56.448284",
     "exception": false,
     "start_time": "2021-06-14T19:59:59.896153",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Collecting keras-tcn\r\n",
      "  Downloading keras_tcn-3.4.0-py2.py3-none-any.whl (13 kB)\r\n",
      "Collecting tensorflow==2.5.0\r\n",
      "  Downloading tensorflow-2.5.0-cp37-cp37m-manylinux2010_x86_64.whl (454.3 MB)\r\n",
      "\u001b[K     |████████████████████████████████| 454.3 MB 14 kB/s \r\n",
      "\u001b[?25hRequirement already satisfied: keras-preprocessing~=1.1.2 in /opt/conda/lib/python3.7/site-packages (from tensorflow==2.5.0) (1.1.2)\r\n",
      "Requirement already satisfied: six~=1.15.0 in /opt/conda/lib/python3.7/site-packages (from tensorflow==2.5.0) (1.15.0)\r\n",
      "Requirement already satisfied: absl-py~=0.10 in /opt/conda/lib/python3.7/site-packages (from tensorflow==2.5.0) (0.12.0)\r\n",
      "Collecting keras-nightly~=2.5.0.dev\r\n",
      "  Downloading keras_nightly-2.5.0.dev2021032900-py2.py3-none-any.whl (1.2 MB)\r\n",
      "\u001b[K     |████████████████████████████████| 1.2 MB 15.6 MB/s \r\n",
      "\u001b[?25hCollecting gast==0.4.0\r\n",
      "  Downloading gast-0.4.0-py3-none-any.whl (9.8 kB)\r\n",
      "Collecting tensorboard~=2.5\r\n",
      "  Downloading tensorboard-2.5.0-py3-none-any.whl (6.0 MB)\r\n",
      "\u001b[K     |████████████████████████████████| 6.0 MB 51.6 MB/s \r\n",
      "\u001b[?25hRequirement already satisfied: numpy~=1.19.2 in /opt/conda/lib/python3.7/site-packages (from tensorflow==2.5.0) (1.19.5)\r\n",
      "Requirement already satisfied: google-pasta~=0.2 in /opt/conda/lib/python3.7/site-packages (from tensorflow==2.5.0) (0.2.0)\r\n",
      "Requirement already satisfied: opt-einsum~=3.3.0 in /opt/conda/lib/python3.7/site-packages (from tensorflow==2.5.0) (3.3.0)\r\n",
      "Requirement already satisfied: wrapt~=1.12.1 in /opt/conda/lib/python3.7/site-packages (from tensorflow==2.5.0) (1.12.1)\r\n",
      "Collecting h5py~=3.1.0\r\n",
      "  Downloading h5py-3.1.0-cp37-cp37m-manylinux1_x86_64.whl (4.0 MB)\r\n",
      "\u001b[K     |████████████████████████████████| 4.0 MB 53.2 MB/s \r\n",
      "\u001b[?25hCollecting grpcio~=1.34.0\r\n",
      "  Downloading grpcio-1.34.1-cp37-cp37m-manylinux2014_x86_64.whl (4.0 MB)\r\n",
      "\u001b[K     |████████████████████████████████| 4.0 MB 23.4 MB/s \r\n",
      "\u001b[?25hRequirement already satisfied: wheel~=0.35 in /opt/conda/lib/python3.7/site-packages (from tensorflow==2.5.0) (0.36.2)\r\n",
      "Requirement already satisfied: protobuf>=3.9.2 in /opt/conda/lib/python3.7/site-packages (from tensorflow==2.5.0) (3.15.8)\r\n",
      "Requirement already satisfied: typing-extensions~=3.7.4 in /opt/conda/lib/python3.7/site-packages (from tensorflow==2.5.0) (3.7.4.3)\r\n",
      "Collecting tensorflow-estimator<2.6.0,>=2.5.0rc0\r\n",
      "  Downloading tensorflow_estimator-2.5.0-py2.py3-none-any.whl (462 kB)\r\n",
      "\u001b[K     |████████████████████████████████| 462 kB 54.4 MB/s \r\n",
      "\u001b[?25hRequirement already satisfied: flatbuffers~=1.12.0 in /opt/conda/lib/python3.7/site-packages (from tensorflow==2.5.0) (1.12)\r\n",
      "Requirement already satisfied: astunparse~=1.6.3 in /opt/conda/lib/python3.7/site-packages (from tensorflow==2.5.0) (1.6.3)\r\n",
      "Requirement already satisfied: termcolor~=1.1.0 in /opt/conda/lib/python3.7/site-packages (from tensorflow==2.5.0) (1.1.0)\r\n",
      "Collecting cached-property\r\n",
      "  Downloading cached_property-1.5.2-py2.py3-none-any.whl (7.6 kB)\r\n",
      "Requirement already satisfied: google-auth-oauthlib<0.5,>=0.4.1 in /opt/conda/lib/python3.7/site-packages (from tensorboard~=2.5->tensorflow==2.5.0) (0.4.3)\r\n",
      "Collecting tensorboard-data-server<0.7.0,>=0.6.0\r\n",
      "  Downloading tensorboard_data_server-0.6.1-py3-none-manylinux2010_x86_64.whl (4.9 MB)\r\n",
      "\u001b[K     |████████████████████████████████| 4.9 MB 17.1 MB/s \r\n",
      "\u001b[?25hRequirement already satisfied: tensorboard-plugin-wit>=1.6.0 in /opt/conda/lib/python3.7/site-packages (from tensorboard~=2.5->tensorflow==2.5.0) (1.8.0)\r\n",
      "Requirement already satisfied: markdown>=2.6.8 in /opt/conda/lib/python3.7/site-packages (from tensorboard~=2.5->tensorflow==2.5.0) (3.3.4)\r\n",
      "Requirement already satisfied: google-auth<2,>=1.6.3 in /opt/conda/lib/python3.7/site-packages (from tensorboard~=2.5->tensorflow==2.5.0) (1.26.1)\r\n",
      "Requirement already satisfied: werkzeug>=0.11.15 in /opt/conda/lib/python3.7/site-packages (from tensorboard~=2.5->tensorflow==2.5.0) (1.0.1)\r\n",
      "Requirement already satisfied: requests<3,>=2.21.0 in /opt/conda/lib/python3.7/site-packages (from tensorboard~=2.5->tensorflow==2.5.0) (2.25.1)\r\n",
      "Requirement already satisfied: setuptools>=41.0.0 in /opt/conda/lib/python3.7/site-packages (from tensorboard~=2.5->tensorflow==2.5.0) (49.6.0.post20210108)\r\n",
      "Requirement already satisfied: rsa<5,>=3.1.4 in /opt/conda/lib/python3.7/site-packages (from google-auth<2,>=1.6.3->tensorboard~=2.5->tensorflow==2.5.0) (4.7.2)\r\n",
      "Requirement already satisfied: pyasn1-modules>=0.2.1 in /opt/conda/lib/python3.7/site-packages (from google-auth<2,>=1.6.3->tensorboard~=2.5->tensorflow==2.5.0) (0.2.7)\r\n",
      "Requirement already satisfied: cachetools<5.0,>=2.0.0 in /opt/conda/lib/python3.7/site-packages (from google-auth<2,>=1.6.3->tensorboard~=2.5->tensorflow==2.5.0) (4.2.1)\r\n",
      "Requirement already satisfied: requests-oauthlib>=0.7.0 in /opt/conda/lib/python3.7/site-packages (from google-auth-oauthlib<0.5,>=0.4.1->tensorboard~=2.5->tensorflow==2.5.0) (1.3.0)\r\n",
      "Requirement already satisfied: importlib-metadata in /opt/conda/lib/python3.7/site-packages (from markdown>=2.6.8->tensorboard~=2.5->tensorflow==2.5.0) (3.4.0)\r\n",
      "Requirement already satisfied: pyasn1<0.5.0,>=0.4.6 in /opt/conda/lib/python3.7/site-packages (from pyasn1-modules>=0.2.1->google-auth<2,>=1.6.3->tensorboard~=2.5->tensorflow==2.5.0) (0.4.8)\r\n",
      "Requirement already satisfied: idna<3,>=2.5 in /opt/conda/lib/python3.7/site-packages (from requests<3,>=2.21.0->tensorboard~=2.5->tensorflow==2.5.0) (2.10)\r\n",
      "Requirement already satisfied: urllib3<1.27,>=1.21.1 in /opt/conda/lib/python3.7/site-packages (from requests<3,>=2.21.0->tensorboard~=2.5->tensorflow==2.5.0) (1.26.4)\r\n",
      "Requirement already satisfied: chardet<5,>=3.0.2 in /opt/conda/lib/python3.7/site-packages (from requests<3,>=2.21.0->tensorboard~=2.5->tensorflow==2.5.0) (4.0.0)\r\n",
      "Requirement already satisfied: certifi>=2017.4.17 in /opt/conda/lib/python3.7/site-packages (from requests<3,>=2.21.0->tensorboard~=2.5->tensorflow==2.5.0) (2020.12.5)\r\n",
      "Requirement already satisfied: oauthlib>=3.0.0 in /opt/conda/lib/python3.7/site-packages (from requests-oauthlib>=0.7.0->google-auth-oauthlib<0.5,>=0.4.1->tensorboard~=2.5->tensorflow==2.5.0) (3.0.1)\r\n",
      "Requirement already satisfied: tensorflow-addons in /opt/conda/lib/python3.7/site-packages (from keras-tcn) (0.12.1)\r\n",
      "Requirement already satisfied: zipp>=0.5 in /opt/conda/lib/python3.7/site-packages (from importlib-metadata->markdown>=2.6.8->tensorboard~=2.5->tensorflow==2.5.0) (3.4.1)\r\n",
      "Requirement already satisfied: typeguard>=2.7 in /opt/conda/lib/python3.7/site-packages (from tensorflow-addons->keras-tcn) (2.12.0)\r\n",
      "Installing collected packages: tensorboard-data-server, grpcio, cached-property, tensorflow-estimator, tensorboard, keras-nightly, h5py, gast, tensorflow, keras-tcn\r\n",
      "  Attempting uninstall: grpcio\r\n",
      "    Found existing installation: grpcio 1.32.0\r\n",
      "    Uninstalling grpcio-1.32.0:\r\n",
      "      Successfully uninstalled grpcio-1.32.0\r\n",
      "  Attempting uninstall: tensorflow-estimator\r\n",
      "    Found existing installation: tensorflow-estimator 2.4.0\r\n",
      "    Uninstalling tensorflow-estimator-2.4.0:\r\n",
      "      Successfully uninstalled tensorflow-estimator-2.4.0\r\n",
      "  Attempting uninstall: tensorboard\r\n",
      "    Found existing installation: tensorboard 2.4.1\r\n",
      "    Uninstalling tensorboard-2.4.1:\r\n",
      "      Successfully uninstalled tensorboard-2.4.1\r\n",
      "  Attempting uninstall: h5py\r\n",
      "    Found existing installation: h5py 2.10.0\r\n",
      "    Uninstalling h5py-2.10.0:\r\n",
      "      Successfully uninstalled h5py-2.10.0\r\n",
      "  Attempting uninstall: gast\r\n",
      "    Found existing installation: gast 0.3.3\r\n",
      "    Uninstalling gast-0.3.3:\r\n",
      "      Successfully uninstalled gast-0.3.3\r\n",
      "  Attempting uninstall: tensorflow\r\n",
      "    Found existing installation: tensorflow 2.4.1\r\n",
      "    Uninstalling tensorflow-2.4.1:\r\n",
      "      Successfully uninstalled tensorflow-2.4.1\r\n",
      "Successfully installed cached-property-1.5.2 gast-0.4.0 grpcio-1.34.1 h5py-3.1.0 keras-nightly-2.5.0.dev2021032900 keras-tcn-3.4.0 tensorboard-2.5.0 tensorboard-data-server-0.6.1 tensorflow-2.5.0 tensorflow-estimator-2.5.0\r\n"
     ]
    }
   ],
   "source": [
    "!pip install keras-tcn tensorflow==2.5.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "final-ancient",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:00:56.792205Z",
     "iopub.status.busy": "2021-06-14T20:00:56.791400Z",
     "iopub.status.idle": "2021-06-14T20:00:59.382710Z",
     "shell.execute_reply": "2021-06-14T20:00:59.383165Z",
     "shell.execute_reply.started": "2021-06-14T19:44:26.649771Z"
    },
    "papermill": {
     "duration": 2.765742,
     "end_time": "2021-06-14T20:00:59.383374",
     "exception": false,
     "start_time": "2021-06-14T20:00:56.617632",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/opt/conda/lib/python3.7/site-packages/tensorflow_addons/utils/ensure_tf_install.py:67: UserWarning: Tensorflow Addons supports using Python ops for all Tensorflow versions above or equal to 2.3.0 and strictly below 2.5.0 (nightly versions are not supported). \n",
      " The versions of TensorFlow you are currently using is 2.5.0 and is not supported. \n",
      "Some things might work, some things might not.\n",
      "If you were to encounter a bug, do not file an issue.\n",
      "If you want to make sure you're using a tested and supported configuration, either change the TensorFlow version or the TensorFlow Addons's version. \n",
      "You can find the compatibility matrix in TensorFlow Addon's readme:\n",
      "https://github.com/tensorflow/addons\n",
      "  UserWarning,\n"
     ]
    }
   ],
   "source": [
    "# data setup code\n",
    "\n",
    "import numpy as np # linear algebra\n",
    "np.set_printoptions(precision=3, suppress=True) # improve printing\n",
    "\n",
    "from scipy.signal import lfilter\n",
    "import scipy\n",
    "\n",
    "import tensorflow as tf\n",
    "from tensorflow.keras import layers, models, losses, metrics, Input, utils\n",
    "import tensorflow_addons as tfa\n",
    "\n",
    "from tcn import TCN, tcn_full_summary\n",
    "\n",
    "import os\n",
    "from random import choice\n",
    "import re\n",
    "from scipy.fft import fft\n",
    "\n",
    "file_name_regex = re.compile(\"([I\\d]{3})_SIG_II\\.npy\")\n",
    "\n",
    "# file loader\n",
    "def load_files(path):\n",
    "    data = {}\n",
    "    for entry in os.scandir(path):\n",
    "        if entry.is_dir():\n",
    "            for file in os.scandir(entry.path):\n",
    "                match = file_name_regex.match(file.name)\n",
    "                if match and file.is_file():\n",
    "                    data[match.groups()[0]] = np.load(file.path)\n",
    "    return data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "arctic-ocean",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:00:59.715001Z",
     "iopub.status.busy": "2021-06-14T20:00:59.714445Z",
     "iopub.status.idle": "2021-06-14T20:00:59.719130Z",
     "shell.execute_reply": "2021-06-14T20:00:59.719677Z",
     "shell.execute_reply.started": "2021-06-14T19:30:33.428178Z"
    },
    "papermill": {
     "duration": 0.1736,
     "end_time": "2021-06-14T20:00:59.719837",
     "exception": false,
     "start_time": "2021-06-14T20:00:59.546237",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "1.5.4 1.19.5 2.5.0\n"
     ]
    }
   ],
   "source": [
    "print(scipy.__version__, np.__version__, tf.__version__)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "enormous-truth",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:01:00.172690Z",
     "iopub.status.busy": "2021-06-14T20:01:00.171780Z",
     "iopub.status.idle": "2021-06-14T20:01:00.177428Z",
     "shell.execute_reply": "2021-06-14T20:01:00.177799Z",
     "shell.execute_reply.started": "2021-06-14T19:30:33.441313Z"
    },
    "papermill": {
     "duration": 0.299321,
     "end_time": "2021-06-14T20:01:00.177946",
     "exception": false,
     "start_time": "2021-06-14T20:00:59.878625",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "No TPU detected; Defaulting to CPU or GPU training.\n",
      "GPUs available:  []\n"
     ]
    }
   ],
   "source": [
    "try:\n",
    "    # detect and init the TPU\n",
    "    tpu = tf.distribute.cluster_resolver.TPUClusterResolver.connect()\n",
    "\n",
    "    # instantiate a distribution strategy\n",
    "    strategy = tf.distribute.experimental.TPUStrategy(tpu)\n",
    "except ValueError:\n",
    "    print(\"No TPU detected; Defaulting to CPU or GPU training.\")\n",
    "    print(\"GPUs available: \", tf.config.list_physical_devices('GPU'))\n",
    "    strategy = tf.distribute.get_strategy()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "aggressive-internet",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:01:00.696652Z",
     "iopub.status.busy": "2021-06-14T20:01:00.695378Z",
     "iopub.status.idle": "2021-06-14T20:01:04.333656Z",
     "shell.execute_reply": "2021-06-14T20:01:04.332785Z",
     "shell.execute_reply.started": "2021-06-14T19:30:33.579703Z"
    },
    "papermill": {
     "duration": 3.9335,
     "end_time": "2021-06-14T20:01:04.333809",
     "exception": false,
     "start_time": "2021-06-14T20:01:00.400309",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# actually load the data\n",
    "data = load_files(\"../input/ecg-lead-2-dataset-physionet-open-access/db_npy\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "final-london",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:01:04.659320Z",
     "iopub.status.busy": "2021-06-14T20:01:04.658665Z",
     "iopub.status.idle": "2021-06-14T20:01:04.661652Z",
     "shell.execute_reply": "2021-06-14T20:01:04.662041Z",
     "shell.execute_reply.started": "2021-06-14T19:30:39.711389Z"
    },
    "papermill": {
     "duration": 0.168644,
     "end_time": "2021-06-14T20:01:04.662192",
     "exception": false,
     "start_time": "2021-06-14T20:01:04.493548",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "233\n"
     ]
    }
   ],
   "source": [
    "# select the person you want the model to learn to recognise:\n",
    "target = choice(list(data.keys()))\n",
    "# you can also define it manually:\n",
    "# target = \"100\"\n",
    "print(target)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "specified-arlington",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:01:04.992197Z",
     "iopub.status.busy": "2021-06-14T20:01:04.991390Z",
     "iopub.status.idle": "2021-06-14T20:01:10.651617Z",
     "shell.execute_reply": "2021-06-14T20:01:10.654625Z",
     "shell.execute_reply.started": "2021-06-14T19:30:39.720626Z"
    },
    "papermill": {
     "duration": 5.834116,
     "end_time": "2021-06-14T20:01:10.654899",
     "exception": false,
     "start_time": "2021-06-14T20:01:04.820783",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# prepare training and validation data\n",
    "training_data, validation_data, training_labels, validation_labels = ([], [], [], [])\n",
    "length = len(data.keys())\n",
    "def moving_average(ar, N):\n",
    "    return lfilter(np.ones(N)/N, [1], ar)\n",
    "\n",
    "for index, (label, array) in enumerate(data.items()):\n",
    "    # cut the samples at 30 minutes - makes dividing the data easier\n",
    "    if array.size>230400:\n",
    "        array = array[:230400]\n",
    "    \n",
    "    noise = np.random.normal(0,1,230400)\n",
    "    array = array+noise\n",
    "    norm = np.linalg.norm(array)\n",
    "    array = array/norm\n",
    "    array = moving_average(array, 5)\n",
    "    split = np.array_split(array, 40)\n",
    "    checks = [choice(list(data.keys())) if choice([True,False]) else label for i in range(len(split))]\n",
    "    training_data.extend([np.reshape(fft(arr), (45, 128)) for arr in split[:20]])\n",
    "    training_labels.extend([np.insert(np.zeros(length-1), index, 1)] * 20)\n",
    "    validation_data.extend([np.reshape(fft(arr), (45, 128)) for arr in split[20:]])\n",
    "    validation_labels.extend([np.insert(np.zeros(length-1), index, 1)]*len(checks[20:]))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "collaborative-count",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:01:11.260903Z",
     "iopub.status.busy": "2021-06-14T20:01:11.260085Z",
     "iopub.status.idle": "2021-06-14T20:01:21.985059Z",
     "shell.execute_reply": "2021-06-14T20:01:21.984558Z",
     "shell.execute_reply.started": "2021-06-14T19:30:44.756968Z"
    },
    "papermill": {
     "duration": 11.005554,
     "end_time": "2021-06-14T20:01:21.985212",
     "exception": false,
     "start_time": "2021-06-14T20:01:10.979658",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "training_dataset = tf.data.Dataset.from_tensor_slices((training_data, training_labels))\n",
    "validation_dataset = tf.data.Dataset.from_tensor_slices((validation_data, validation_labels))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "diverse-intersection",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:01:22.324350Z",
     "iopub.status.busy": "2021-06-14T20:01:22.323221Z",
     "iopub.status.idle": "2021-06-14T20:01:22.327915Z",
     "shell.execute_reply": "2021-06-14T20:01:22.327422Z",
     "shell.execute_reply.started": "2021-06-14T19:30:55.500416Z"
    },
    "papermill": {
     "duration": 0.178394,
     "end_time": "2021-06-14T20:01:22.328049",
     "exception": false,
     "start_time": "2021-06-14T20:01:22.149655",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<TensorSliceDataset shapes: ((45, 128), (199,)), types: (tf.complex128, tf.float64)>"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "training_dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "adjusted-parish",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:01:22.664859Z",
     "iopub.status.busy": "2021-06-14T20:01:22.663983Z",
     "iopub.status.idle": "2021-06-14T20:01:22.668707Z",
     "shell.execute_reply": "2021-06-14T20:01:22.668281Z",
     "shell.execute_reply.started": "2021-06-14T19:30:55.512054Z"
    },
    "papermill": {
     "duration": 0.176715,
     "end_time": "2021-06-14T20:01:22.668824",
     "exception": false,
     "start_time": "2021-06-14T20:01:22.492109",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# shuffle and batch the dataset\n",
    "BATCH_SIZE = 64 * strategy.num_replicas_in_sync\n",
    "SHUFFLE_BUFFER_SIZE = 1000\n",
    "training_dataset = training_dataset.shuffle(SHUFFLE_BUFFER_SIZE).batch(BATCH_SIZE)\n",
    "validation_dataset = validation_dataset.batch(BATCH_SIZE)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "running-antarctica",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:01:23.015078Z",
     "iopub.status.busy": "2021-06-14T20:01:23.014229Z",
     "iopub.status.idle": "2021-06-14T20:01:23.824809Z",
     "shell.execute_reply": "2021-06-14T20:01:23.824124Z",
     "shell.execute_reply.started": "2021-06-14T19:54:44.634366Z"
    },
    "papermill": {
     "duration": 0.993236,
     "end_time": "2021-06-14T20:01:23.824983",
     "exception": false,
     "start_time": "2021-06-14T20:01:22.831747",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# prepare \n",
    "\n",
    "with strategy.scope():\n",
    "    \n",
    "    used_metrics = [\n",
    "        metrics.TruePositives(name='tp'),\n",
    "        metrics.FalsePositives(name=\"fp\"),\n",
    "        metrics.TrueNegatives(name='tn'),\n",
    "        metrics.FalseNegatives(name='fn'),\n",
    "        metrics.CategoricalAccuracy(name='accuracy'),\n",
    "    ]\n",
    "    checkpoint_callback = tf.keras.callbacks.ModelCheckpoint(filepath=\"./checkpoints/checkpoint.ckpt\",\n",
    "                                                             save_weights_only=True,\n",
    "                                                             save_best_only=True,\n",
    "                                                             monitor='val_accuracy',\n",
    "                                                             verbose=1)\n",
    "    model = models.Sequential([\n",
    "        TCN(input_shape=(45,128), kernel_size=3, use_skip_connections=True, nb_filters=64, dilations=[1,2,4,8], return_sequences=True, use_batch_norm=True, dropout_rate=0.05),\n",
    "        TCN(kernel_size=3, use_skip_connections=True, nb_filters=16, dilations=[1,2,4,8], use_batch_norm=True, dropout_rate=0.05),\n",
    "        layers.Dense(32, activation=\"linear\"),\n",
    "        layers.Dense(96, activation=\"linear\"),\n",
    "        layers.Dense(length, activation=\"softmax\")\n",
    "    ])\n",
    "    model.compile(loss=\"categorical_crossentropy\", optimizer=\"adam\", metrics=used_metrics)\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "cooked-spell",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:01:24.162513Z",
     "iopub.status.busy": "2021-06-14T20:01:24.161754Z",
     "iopub.status.idle": "2021-06-14T20:01:24.608950Z",
     "shell.execute_reply": "2021-06-14T20:01:24.608533Z",
     "shell.execute_reply.started": "2021-06-14T19:54:45.133524Z"
    },
    "papermill": {
     "duration": 0.621521,
     "end_time": "2021-06-14T20:01:24.609072",
     "exception": false,
     "start_time": "2021-06-14T20:01:23.987551",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "utils.plot_model(model, show_shapes=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "constant-cigarette",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:01:24.942367Z",
     "iopub.status.busy": "2021-06-14T20:01:24.941524Z",
     "iopub.status.idle": "2021-06-14T20:36:29.362735Z",
     "shell.execute_reply": "2021-06-14T20:36:29.363123Z",
     "shell.execute_reply.started": "2021-06-14T19:54:46.281704Z"
    },
    "papermill": {
     "duration": 2104.590333,
     "end_time": "2021-06-14T20:36:29.363330",
     "exception": false,
     "start_time": "2021-06-14T20:01:24.772997",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Epoch 1/200\n",
      "63/63 [==============================] - 16s 154ms/step - loss: 5.3278 - tp: 0.0000e+00 - fp: 0.0000e+00 - tn: 788040.0000 - fn: 3980.0000 - accuracy: 0.0063 - val_loss: 5.3036 - val_tp: 0.0000e+00 - val_fp: 0.0000e+00 - val_tn: 788040.0000 - val_fn: 3980.0000 - val_accuracy: 0.0033\n",
      "\n",
      "Epoch 00001: val_accuracy improved from -inf to 0.00327, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 2/200\n",
      "63/63 [==============================] - 9s 149ms/step - loss: 5.2923 - tp: 1.0000 - fp: 0.0000e+00 - tn: 788040.0000 - fn: 3979.0000 - accuracy: 0.0131 - val_loss: 5.3383 - val_tp: 0.0000e+00 - val_fp: 0.0000e+00 - val_tn: 788040.0000 - val_fn: 3980.0000 - val_accuracy: 0.0055\n",
      "\n",
      "Epoch 00002: val_accuracy improved from 0.00327 to 0.00553, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 3/200\n",
      "63/63 [==============================] - 9s 142ms/step - loss: 5.2525 - tp: 0.0000e+00 - fp: 6.0000 - tn: 788034.0000 - fn: 3980.0000 - accuracy: 0.0065 - val_loss: 5.4482 - val_tp: 0.0000e+00 - val_fp: 0.0000e+00 - val_tn: 788040.0000 - val_fn: 3980.0000 - val_accuracy: 0.0055\n",
      "\n",
      "Epoch 00003: val_accuracy did not improve from 0.00553\n",
      "Epoch 4/200\n",
      "63/63 [==============================] - 9s 140ms/step - loss: 5.0043 - tp: 0.0000e+00 - fp: 1.0000 - tn: 788039.0000 - fn: 3980.0000 - accuracy: 0.0088 - val_loss: 5.9084 - val_tp: 0.0000e+00 - val_fp: 0.0000e+00 - val_tn: 788040.0000 - val_fn: 3980.0000 - val_accuracy: 0.0050\n",
      "\n",
      "Epoch 00004: val_accuracy did not improve from 0.00553\n",
      "Epoch 5/200\n",
      "63/63 [==============================] - 9s 148ms/step - loss: 4.9439 - tp: 1.0000 - fp: 1.0000 - tn: 788039.0000 - fn: 3979.0000 - accuracy: 0.0116 - val_loss: 6.0794 - val_tp: 0.0000e+00 - val_fp: 0.0000e+00 - val_tn: 788040.0000 - val_fn: 3980.0000 - val_accuracy: 0.0045\n",
      "\n",
      "Epoch 00005: val_accuracy did not improve from 0.00553\n",
      "Epoch 6/200\n",
      "63/63 [==============================] - 9s 146ms/step - loss: 4.8585 - tp: 0.0000e+00 - fp: 1.0000 - tn: 788039.0000 - fn: 3980.0000 - accuracy: 0.0123 - val_loss: 6.1857 - val_tp: 0.0000e+00 - val_fp: 0.0000e+00 - val_tn: 788040.0000 - val_fn: 3980.0000 - val_accuracy: 0.0060\n",
      "\n",
      "Epoch 00006: val_accuracy improved from 0.00553 to 0.00603, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 7/200\n",
      "63/63 [==============================] - 9s 141ms/step - loss: 4.7533 - tp: 0.0000e+00 - fp: 5.0000 - tn: 788035.0000 - fn: 3980.0000 - accuracy: 0.0151 - val_loss: 5.9001 - val_tp: 0.0000e+00 - val_fp: 0.0000e+00 - val_tn: 788040.0000 - val_fn: 3980.0000 - val_accuracy: 0.0095\n",
      "\n",
      "Epoch 00007: val_accuracy improved from 0.00603 to 0.00955, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 8/200\n",
      "63/63 [==============================] - 9s 139ms/step - loss: 4.5416 - tp: 5.0000 - fp: 9.0000 - tn: 788031.0000 - fn: 3975.0000 - accuracy: 0.0334 - val_loss: 5.3919 - val_tp: 1.0000 - val_fp: 0.0000e+00 - val_tn: 788040.0000 - val_fn: 3979.0000 - val_accuracy: 0.0183\n",
      "\n",
      "Epoch 00008: val_accuracy improved from 0.00955 to 0.01834, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 9/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 4.3758 - tp: 7.0000 - fp: 11.0000 - tn: 788029.0000 - fn: 3973.0000 - accuracy: 0.0410 - val_loss: 4.8070 - val_tp: 2.0000 - val_fp: 15.0000 - val_tn: 788025.0000 - val_fn: 3978.0000 - val_accuracy: 0.0224\n",
      "\n",
      "Epoch 00009: val_accuracy improved from 0.01834 to 0.02236, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 10/200\n",
      "63/63 [==============================] - 8s 135ms/step - loss: 4.2153 - tp: 15.0000 - fp: 15.0000 - tn: 788025.0000 - fn: 3965.0000 - accuracy: 0.0505 - val_loss: 4.6477 - val_tp: 1.0000 - val_fp: 18.0000 - val_tn: 788022.0000 - val_fn: 3979.0000 - val_accuracy: 0.0304\n",
      "\n",
      "Epoch 00010: val_accuracy improved from 0.02236 to 0.03040, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 11/200\n",
      "63/63 [==============================] - 9s 141ms/step - loss: 4.0307 - tp: 12.0000 - fp: 18.0000 - tn: 788022.0000 - fn: 3968.0000 - accuracy: 0.0663 - val_loss: 4.7403 - val_tp: 4.0000 - val_fp: 7.0000 - val_tn: 788033.0000 - val_fn: 3976.0000 - val_accuracy: 0.0389\n",
      "\n",
      "Epoch 00011: val_accuracy improved from 0.03040 to 0.03894, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 12/200\n",
      "63/63 [==============================] - 9s 150ms/step - loss: 3.8685 - tp: 16.0000 - fp: 17.0000 - tn: 788023.0000 - fn: 3964.0000 - accuracy: 0.0754 - val_loss: 4.9529 - val_tp: 6.0000 - val_fp: 25.0000 - val_tn: 788015.0000 - val_fn: 3974.0000 - val_accuracy: 0.0347\n",
      "\n",
      "Epoch 00012: val_accuracy did not improve from 0.03894\n",
      "Epoch 13/200\n",
      "63/63 [==============================] - 9s 146ms/step - loss: 3.7645 - tp: 22.0000 - fp: 26.0000 - tn: 788014.0000 - fn: 3958.0000 - accuracy: 0.0832 - val_loss: 5.0344 - val_tp: 17.0000 - val_fp: 35.0000 - val_tn: 788005.0000 - val_fn: 3963.0000 - val_accuracy: 0.0369\n",
      "\n",
      "Epoch 00013: val_accuracy did not improve from 0.03894\n",
      "Epoch 14/200\n",
      "63/63 [==============================] - 9s 144ms/step - loss: 3.5763 - tp: 20.0000 - fp: 34.0000 - tn: 788006.0000 - fn: 3960.0000 - accuracy: 0.1043 - val_loss: 5.0868 - val_tp: 8.0000 - val_fp: 51.0000 - val_tn: 787989.0000 - val_fn: 3972.0000 - val_accuracy: 0.0349\n",
      "\n",
      "Epoch 00014: val_accuracy did not improve from 0.03894\n",
      "Epoch 15/200\n",
      "63/63 [==============================] - 9s 142ms/step - loss: 3.4338 - tp: 24.0000 - fp: 37.0000 - tn: 788003.0000 - fn: 3956.0000 - accuracy: 0.1138 - val_loss: 5.1460 - val_tp: 33.0000 - val_fp: 120.0000 - val_tn: 787920.0000 - val_fn: 3947.0000 - val_accuracy: 0.0276\n",
      "\n",
      "Epoch 00015: val_accuracy did not improve from 0.03894\n",
      "Epoch 16/200\n",
      "63/63 [==============================] - 10s 154ms/step - loss: 3.2741 - tp: 39.0000 - fp: 69.0000 - tn: 787971.0000 - fn: 3941.0000 - accuracy: 0.1384 - val_loss: 5.1179 - val_tp: 36.0000 - val_fp: 60.0000 - val_tn: 787980.0000 - val_fn: 3944.0000 - val_accuracy: 0.0369\n",
      "\n",
      "Epoch 00016: val_accuracy did not improve from 0.03894\n",
      "Epoch 17/200\n",
      "63/63 [==============================] - 9s 142ms/step - loss: 3.0783 - tp: 89.0000 - fp: 80.0000 - tn: 787960.0000 - fn: 3891.0000 - accuracy: 0.1623 - val_loss: 5.3776 - val_tp: 23.0000 - val_fp: 74.0000 - val_tn: 787966.0000 - val_fn: 3957.0000 - val_accuracy: 0.0364\n",
      "\n",
      "Epoch 00017: val_accuracy did not improve from 0.03894\n",
      "Epoch 18/200\n",
      "63/63 [==============================] - 9s 136ms/step - loss: 3.0138 - tp: 105.0000 - fp: 96.0000 - tn: 787944.0000 - fn: 3875.0000 - accuracy: 0.1854 - val_loss: 5.5635 - val_tp: 10.0000 - val_fp: 79.0000 - val_tn: 787961.0000 - val_fn: 3970.0000 - val_accuracy: 0.0379\n",
      "\n",
      "Epoch 00018: val_accuracy did not improve from 0.03894\n",
      "Epoch 19/200\n",
      "63/63 [==============================] - 10s 155ms/step - loss: 2.8277 - tp: 144.0000 - fp: 127.0000 - tn: 787913.0000 - fn: 3836.0000 - accuracy: 0.2113 - val_loss: 5.6158 - val_tp: 31.0000 - val_fp: 117.0000 - val_tn: 787923.0000 - val_fn: 3949.0000 - val_accuracy: 0.0374\n",
      "\n",
      "Epoch 00019: val_accuracy did not improve from 0.03894\n",
      "Epoch 20/200\n",
      "63/63 [==============================] - 9s 139ms/step - loss: 2.6918 - tp: 226.0000 - fp: 156.0000 - tn: 787884.0000 - fn: 3754.0000 - accuracy: 0.2417 - val_loss: 5.6686 - val_tp: 26.0000 - val_fp: 119.0000 - val_tn: 787921.0000 - val_fn: 3954.0000 - val_accuracy: 0.0392\n",
      "\n",
      "Epoch 00020: val_accuracy improved from 0.03894 to 0.03920, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 21/200\n",
      "63/63 [==============================] - 9s 140ms/step - loss: 2.5411 - tp: 294.0000 - fp: 179.0000 - tn: 787861.0000 - fn: 3686.0000 - accuracy: 0.2764 - val_loss: 6.0473 - val_tp: 29.0000 - val_fp: 199.0000 - val_tn: 787841.0000 - val_fn: 3951.0000 - val_accuracy: 0.0394\n",
      "\n",
      "Epoch 00021: val_accuracy improved from 0.03920 to 0.03945, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 22/200\n",
      "63/63 [==============================] - 9s 146ms/step - loss: 2.4856 - tp: 330.0000 - fp: 246.0000 - tn: 787794.0000 - fn: 3650.0000 - accuracy: 0.2882 - val_loss: 6.1129 - val_tp: 32.0000 - val_fp: 249.0000 - val_tn: 787791.0000 - val_fn: 3948.0000 - val_accuracy: 0.0402\n",
      "\n",
      "Epoch 00022: val_accuracy improved from 0.03945 to 0.04020, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 23/200\n",
      "63/63 [==============================] - 9s 145ms/step - loss: 2.3693 - tp: 384.0000 - fp: 215.0000 - tn: 787825.0000 - fn: 3596.0000 - accuracy: 0.3070 - val_loss: 6.3189 - val_tp: 40.0000 - val_fp: 245.0000 - val_tn: 787795.0000 - val_fn: 3940.0000 - val_accuracy: 0.0432\n",
      "\n",
      "Epoch 00023: val_accuracy improved from 0.04020 to 0.04322, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 24/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 2.2055 - tp: 555.0000 - fp: 288.0000 - tn: 787752.0000 - fn: 3425.0000 - accuracy: 0.3633 - val_loss: 6.7548 - val_tp: 36.0000 - val_fp: 444.0000 - val_tn: 787596.0000 - val_fn: 3944.0000 - val_accuracy: 0.0392\n",
      "\n",
      "Epoch 00024: val_accuracy did not improve from 0.04322\n",
      "Epoch 25/200\n",
      "63/63 [==============================] - 8s 134ms/step - loss: 2.1557 - tp: 620.0000 - fp: 339.0000 - tn: 787701.0000 - fn: 3360.0000 - accuracy: 0.3583 - val_loss: 6.5432 - val_tp: 37.0000 - val_fp: 385.0000 - val_tn: 787655.0000 - val_fn: 3943.0000 - val_accuracy: 0.0387\n",
      "\n",
      "Epoch 00025: val_accuracy did not improve from 0.04322\n",
      "Epoch 26/200\n",
      "63/63 [==============================] - 10s 157ms/step - loss: 2.0345 - tp: 690.0000 - fp: 305.0000 - tn: 787735.0000 - fn: 3290.0000 - accuracy: 0.3935 - val_loss: 6.9099 - val_tp: 49.0000 - val_fp: 568.0000 - val_tn: 787472.0000 - val_fn: 3931.0000 - val_accuracy: 0.0402\n",
      "\n",
      "Epoch 00026: val_accuracy did not improve from 0.04322\n",
      "Epoch 27/200\n",
      "63/63 [==============================] - 9s 139ms/step - loss: 1.9850 - tp: 817.0000 - fp: 402.0000 - tn: 787638.0000 - fn: 3163.0000 - accuracy: 0.4151 - val_loss: 7.1035 - val_tp: 74.0000 - val_fp: 661.0000 - val_tn: 787379.0000 - val_fn: 3906.0000 - val_accuracy: 0.0422\n",
      "\n",
      "Epoch 00027: val_accuracy did not improve from 0.04322\n",
      "Epoch 28/200\n",
      "63/63 [==============================] - 9s 137ms/step - loss: 1.9313 - tp: 837.0000 - fp: 389.0000 - tn: 787651.0000 - fn: 3143.0000 - accuracy: 0.4294 - val_loss: 6.9977 - val_tp: 40.0000 - val_fp: 595.0000 - val_tn: 787445.0000 - val_fn: 3940.0000 - val_accuracy: 0.0410\n",
      "\n",
      "Epoch 00028: val_accuracy did not improve from 0.04322\n",
      "Epoch 29/200\n",
      "63/63 [==============================] - 10s 157ms/step - loss: 1.8421 - tp: 964.0000 - fp: 403.0000 - tn: 787637.0000 - fn: 3016.0000 - accuracy: 0.4475 - val_loss: 7.2623 - val_tp: 54.0000 - val_fp: 685.0000 - val_tn: 787355.0000 - val_fn: 3926.0000 - val_accuracy: 0.0410\n",
      "\n",
      "Epoch 00029: val_accuracy did not improve from 0.04322\n",
      "Epoch 30/200\n",
      "63/63 [==============================] - 9s 140ms/step - loss: 1.7273 - tp: 1072.0000 - fp: 457.0000 - tn: 787583.0000 - fn: 2908.0000 - accuracy: 0.4796 - val_loss: 7.4522 - val_tp: 57.0000 - val_fp: 778.0000 - val_tn: 787262.0000 - val_fn: 3923.0000 - val_accuracy: 0.0440\n",
      "\n",
      "Epoch 00030: val_accuracy improved from 0.04322 to 0.04397, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 31/200\n",
      "63/63 [==============================] - 9s 141ms/step - loss: 1.6429 - tp: 1202.0000 - fp: 426.0000 - tn: 787614.0000 - fn: 2778.0000 - accuracy: 0.5063 - val_loss: 7.5872 - val_tp: 69.0000 - val_fp: 803.0000 - val_tn: 787237.0000 - val_fn: 3911.0000 - val_accuracy: 0.0460\n",
      "\n",
      "Epoch 00031: val_accuracy improved from 0.04397 to 0.04598, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 32/200\n",
      "63/63 [==============================] - 10s 158ms/step - loss: 1.5966 - tp: 1318.0000 - fp: 537.0000 - tn: 787503.0000 - fn: 2662.0000 - accuracy: 0.5251 - val_loss: 7.8171 - val_tp: 87.0000 - val_fp: 988.0000 - val_tn: 787052.0000 - val_fn: 3893.0000 - val_accuracy: 0.0465\n",
      "\n",
      "Epoch 00032: val_accuracy improved from 0.04598 to 0.04648, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 33/200\n",
      "63/63 [==============================] - 9s 142ms/step - loss: 1.6023 - tp: 1349.0000 - fp: 541.0000 - tn: 787499.0000 - fn: 2631.0000 - accuracy: 0.5166 - val_loss: 8.0222 - val_tp: 84.0000 - val_fp: 1024.0000 - val_tn: 787016.0000 - val_fn: 3896.0000 - val_accuracy: 0.0465\n",
      "\n",
      "Epoch 00033: val_accuracy did not improve from 0.04648\n",
      "Epoch 34/200\n",
      "63/63 [==============================] - 9s 136ms/step - loss: 1.5053 - tp: 1420.0000 - fp: 506.0000 - tn: 787534.0000 - fn: 2560.0000 - accuracy: 0.5445 - val_loss: 7.9697 - val_tp: 82.0000 - val_fp: 1016.0000 - val_tn: 787024.0000 - val_fn: 3898.0000 - val_accuracy: 0.0465\n",
      "\n",
      "Epoch 00034: val_accuracy did not improve from 0.04648\n",
      "Epoch 35/200\n",
      "63/63 [==============================] - 9s 137ms/step - loss: 1.4530 - tp: 1516.0000 - fp: 569.0000 - tn: 787471.0000 - fn: 2464.0000 - accuracy: 0.5575 - val_loss: 8.2698 - val_tp: 84.0000 - val_fp: 1136.0000 - val_tn: 786904.0000 - val_fn: 3896.0000 - val_accuracy: 0.0445\n",
      "\n",
      "Epoch 00035: val_accuracy did not improve from 0.04648\n",
      "Epoch 36/200\n",
      "63/63 [==============================] - 10s 159ms/step - loss: 1.4099 - tp: 1605.0000 - fp: 536.0000 - tn: 787504.0000 - fn: 2375.0000 - accuracy: 0.5746 - val_loss: 8.3489 - val_tp: 85.0000 - val_fp: 1178.0000 - val_tn: 786862.0000 - val_fn: 3895.0000 - val_accuracy: 0.0447\n",
      "\n",
      "Epoch 00036: val_accuracy did not improve from 0.04648\n",
      "Epoch 37/200\n",
      "63/63 [==============================] - 9s 142ms/step - loss: 1.3425 - tp: 1712.0000 - fp: 520.0000 - tn: 787520.0000 - fn: 2268.0000 - accuracy: 0.5955 - val_loss: 8.3042 - val_tp: 85.0000 - val_fp: 1124.0000 - val_tn: 786916.0000 - val_fn: 3895.0000 - val_accuracy: 0.0392\n",
      "\n",
      "Epoch 00037: val_accuracy did not improve from 0.04648\n",
      "Epoch 38/200\n",
      "63/63 [==============================] - 10s 164ms/step - loss: 1.2890 - tp: 1813.0000 - fp: 528.0000 - tn: 787512.0000 - fn: 2167.0000 - accuracy: 0.6103 - val_loss: 8.5496 - val_tp: 91.0000 - val_fp: 1295.0000 - val_tn: 786745.0000 - val_fn: 3889.0000 - val_accuracy: 0.0425\n",
      "\n",
      "Epoch 00038: val_accuracy did not improve from 0.04648\n",
      "Epoch 39/200\n",
      "63/63 [==============================] - 9s 142ms/step - loss: 1.2703 - tp: 1859.0000 - fp: 567.0000 - tn: 787473.0000 - fn: 2121.0000 - accuracy: 0.6171 - val_loss: 8.6468 - val_tp: 90.0000 - val_fp: 1327.0000 - val_tn: 786713.0000 - val_fn: 3890.0000 - val_accuracy: 0.0447\n",
      "\n",
      "Epoch 00039: val_accuracy did not improve from 0.04648\n",
      "Epoch 40/200\n",
      "63/63 [==============================] - 9s 139ms/step - loss: 1.2006 - tp: 1953.0000 - fp: 595.0000 - tn: 787445.0000 - fn: 2027.0000 - accuracy: 0.6322 - val_loss: 8.8481 - val_tp: 84.0000 - val_fp: 1422.0000 - val_tn: 786618.0000 - val_fn: 3896.0000 - val_accuracy: 0.0402\n",
      "\n",
      "Epoch 00040: val_accuracy did not improve from 0.04648\n",
      "Epoch 41/200\n",
      "63/63 [==============================] - 10s 160ms/step - loss: 1.1445 - tp: 2058.0000 - fp: 546.0000 - tn: 787494.0000 - fn: 1922.0000 - accuracy: 0.6518 - val_loss: 9.0221 - val_tp: 84.0000 - val_fp: 1471.0000 - val_tn: 786569.0000 - val_fn: 3896.0000 - val_accuracy: 0.0417\n",
      "\n",
      "Epoch 00041: val_accuracy did not improve from 0.04648\n",
      "Epoch 42/200\n",
      "63/63 [==============================] - 9s 141ms/step - loss: 1.1180 - tp: 2150.0000 - fp: 565.0000 - tn: 787475.0000 - fn: 1830.0000 - accuracy: 0.6601 - val_loss: 9.0050 - val_tp: 89.0000 - val_fp: 1436.0000 - val_tn: 786604.0000 - val_fn: 3891.0000 - val_accuracy: 0.0447\n",
      "\n",
      "Epoch 00042: val_accuracy did not improve from 0.04648\n",
      "Epoch 43/200\n",
      "63/63 [==============================] - 9s 139ms/step - loss: 1.0857 - tp: 2171.0000 - fp: 587.0000 - tn: 787453.0000 - fn: 1809.0000 - accuracy: 0.6756 - val_loss: 9.0222 - val_tp: 94.0000 - val_fp: 1477.0000 - val_tn: 786563.0000 - val_fn: 3886.0000 - val_accuracy: 0.0430\n",
      "\n",
      "Epoch 00043: val_accuracy did not improve from 0.04648\n",
      "Epoch 44/200\n",
      "63/63 [==============================] - 9s 139ms/step - loss: 1.0721 - tp: 2214.0000 - fp: 590.0000 - tn: 787450.0000 - fn: 1766.0000 - accuracy: 0.6628 - val_loss: 9.2649 - val_tp: 101.0000 - val_fp: 1616.0000 - val_tn: 786424.0000 - val_fn: 3879.0000 - val_accuracy: 0.0437\n",
      "\n",
      "Epoch 00044: val_accuracy did not improve from 0.04648\n",
      "Epoch 45/200\n",
      "63/63 [==============================] - 10s 151ms/step - loss: 1.0309 - tp: 2263.0000 - fp: 566.0000 - tn: 787474.0000 - fn: 1717.0000 - accuracy: 0.6786 - val_loss: 9.4006 - val_tp: 95.0000 - val_fp: 1659.0000 - val_tn: 786381.0000 - val_fn: 3885.0000 - val_accuracy: 0.0430\n",
      "\n",
      "Epoch 00045: val_accuracy did not improve from 0.04648\n",
      "Epoch 46/200\n",
      "63/63 [==============================] - 9s 140ms/step - loss: 1.0470 - tp: 2264.0000 - fp: 594.0000 - tn: 787446.0000 - fn: 1716.0000 - accuracy: 0.6812 - val_loss: 9.4366 - val_tp: 88.0000 - val_fp: 1649.0000 - val_tn: 786391.0000 - val_fn: 3892.0000 - val_accuracy: 0.0387\n",
      "\n",
      "Epoch 00046: val_accuracy did not improve from 0.04648\n",
      "Epoch 47/200\n",
      "63/63 [==============================] - 9s 140ms/step - loss: 0.9779 - tp: 2363.0000 - fp: 540.0000 - tn: 787500.0000 - fn: 1617.0000 - accuracy: 0.6987 - val_loss: 9.5908 - val_tp: 105.0000 - val_fp: 1717.0000 - val_tn: 786323.0000 - val_fn: 3875.0000 - val_accuracy: 0.0432\n",
      "\n",
      "Epoch 00047: val_accuracy did not improve from 0.04648\n",
      "Epoch 48/200\n",
      "63/63 [==============================] - 10s 154ms/step - loss: 0.9517 - tp: 2399.0000 - fp: 557.0000 - tn: 787483.0000 - fn: 1581.0000 - accuracy: 0.7023 - val_loss: 9.8877 - val_tp: 103.0000 - val_fp: 1798.0000 - val_tn: 786242.0000 - val_fn: 3877.0000 - val_accuracy: 0.0447\n",
      "\n",
      "Epoch 00048: val_accuracy did not improve from 0.04648\n",
      "Epoch 49/200\n",
      "63/63 [==============================] - 9s 141ms/step - loss: 0.9430 - tp: 2455.0000 - fp: 560.0000 - tn: 787480.0000 - fn: 1525.0000 - accuracy: 0.7095 - val_loss: 9.5713 - val_tp: 95.0000 - val_fp: 1748.0000 - val_tn: 786292.0000 - val_fn: 3885.0000 - val_accuracy: 0.0435\n",
      "\n",
      "Epoch 00049: val_accuracy did not improve from 0.04648\n",
      "Epoch 50/200\n",
      "63/63 [==============================] - 9s 140ms/step - loss: 0.8681 - tp: 2563.0000 - fp: 516.0000 - tn: 787524.0000 - fn: 1417.0000 - accuracy: 0.7344 - val_loss: 9.8638 - val_tp: 94.0000 - val_fp: 1833.0000 - val_tn: 786207.0000 - val_fn: 3886.0000 - val_accuracy: 0.0405\n",
      "\n",
      "Epoch 00050: val_accuracy did not improve from 0.04648\n",
      "Epoch 51/200\n",
      "63/63 [==============================] - 10s 152ms/step - loss: 0.8965 - tp: 2538.0000 - fp: 577.0000 - tn: 787463.0000 - fn: 1442.0000 - accuracy: 0.7181 - val_loss: 9.8514 - val_tp: 103.0000 - val_fp: 1849.0000 - val_tn: 786191.0000 - val_fn: 3877.0000 - val_accuracy: 0.0465\n",
      "\n",
      "Epoch 00051: val_accuracy did not improve from 0.04648\n",
      "Epoch 52/200\n",
      "63/63 [==============================] - 9s 144ms/step - loss: 0.8482 - tp: 2597.0000 - fp: 545.0000 - tn: 787495.0000 - fn: 1383.0000 - accuracy: 0.7389 - val_loss: 9.8822 - val_tp: 111.0000 - val_fp: 1819.0000 - val_tn: 786221.0000 - val_fn: 3869.0000 - val_accuracy: 0.0442\n",
      "\n",
      "Epoch 00052: val_accuracy did not improve from 0.04648\n",
      "Epoch 53/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.8352 - tp: 2626.0000 - fp: 556.0000 - tn: 787484.0000 - fn: 1354.0000 - accuracy: 0.7472 - val_loss: 10.0660 - val_tp: 108.0000 - val_fp: 1861.0000 - val_tn: 786179.0000 - val_fn: 3872.0000 - val_accuracy: 0.0420\n",
      "\n",
      "Epoch 00053: val_accuracy did not improve from 0.04648\n",
      "Epoch 54/200\n",
      "63/63 [==============================] - 10s 159ms/step - loss: 0.8135 - tp: 2666.0000 - fp: 530.0000 - tn: 787510.0000 - fn: 1314.0000 - accuracy: 0.7455 - val_loss: 10.1265 - val_tp: 102.0000 - val_fp: 1912.0000 - val_tn: 786128.0000 - val_fn: 3878.0000 - val_accuracy: 0.0432\n",
      "\n",
      "Epoch 00054: val_accuracy did not improve from 0.04648\n",
      "Epoch 55/200\n",
      "63/63 [==============================] - 9s 136ms/step - loss: 0.7945 - tp: 2708.0000 - fp: 530.0000 - tn: 787510.0000 - fn: 1272.0000 - accuracy: 0.7626 - val_loss: 10.4310 - val_tp: 99.0000 - val_fp: 1964.0000 - val_tn: 786076.0000 - val_fn: 3881.0000 - val_accuracy: 0.0379\n",
      "\n",
      "Epoch 00055: val_accuracy did not improve from 0.04648\n",
      "Epoch 56/200\n",
      "63/63 [==============================] - 8s 135ms/step - loss: 0.7983 - tp: 2753.0000 - fp: 533.0000 - tn: 787507.0000 - fn: 1227.0000 - accuracy: 0.7638 - val_loss: 10.4148 - val_tp: 110.0000 - val_fp: 2004.0000 - val_tn: 786036.0000 - val_fn: 3870.0000 - val_accuracy: 0.0442\n",
      "\n",
      "Epoch 00056: val_accuracy did not improve from 0.04648\n",
      "Epoch 57/200\n",
      "63/63 [==============================] - 9s 144ms/step - loss: 0.8006 - tp: 2749.0000 - fp: 530.0000 - tn: 787510.0000 - fn: 1231.0000 - accuracy: 0.7548 - val_loss: 10.1860 - val_tp: 103.0000 - val_fp: 1968.0000 - val_tn: 786072.0000 - val_fn: 3877.0000 - val_accuracy: 0.0399\n",
      "\n",
      "Epoch 00057: val_accuracy did not improve from 0.04648\n",
      "Epoch 58/200\n",
      "63/63 [==============================] - 10s 152ms/step - loss: 0.7493 - tp: 2770.0000 - fp: 521.0000 - tn: 787519.0000 - fn: 1210.0000 - accuracy: 0.7651 - val_loss: 10.5347 - val_tp: 116.0000 - val_fp: 2012.0000 - val_tn: 786028.0000 - val_fn: 3864.0000 - val_accuracy: 0.0410\n",
      "\n",
      "Epoch 00058: val_accuracy did not improve from 0.04648\n",
      "Epoch 59/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.7506 - tp: 2789.0000 - fp: 524.0000 - tn: 787516.0000 - fn: 1191.0000 - accuracy: 0.7631 - val_loss: 10.4494 - val_tp: 110.0000 - val_fp: 2052.0000 - val_tn: 785988.0000 - val_fn: 3870.0000 - val_accuracy: 0.0422\n",
      "\n",
      "Epoch 00059: val_accuracy did not improve from 0.04648\n",
      "Epoch 60/200\n",
      "63/63 [==============================] - 9s 148ms/step - loss: 0.7744 - tp: 2744.0000 - fp: 548.0000 - tn: 787492.0000 - fn: 1236.0000 - accuracy: 0.7503 - val_loss: 10.2794 - val_tp: 113.0000 - val_fp: 1998.0000 - val_tn: 786042.0000 - val_fn: 3867.0000 - val_accuracy: 0.0402\n",
      "\n",
      "Epoch 00060: val_accuracy did not improve from 0.04648\n",
      "Epoch 61/200\n",
      "63/63 [==============================] - 10s 155ms/step - loss: 0.7388 - tp: 2796.0000 - fp: 519.0000 - tn: 787521.0000 - fn: 1184.0000 - accuracy: 0.7686 - val_loss: 10.5594 - val_tp: 105.0000 - val_fp: 2089.0000 - val_tn: 785951.0000 - val_fn: 3875.0000 - val_accuracy: 0.0392\n",
      "\n",
      "Epoch 00061: val_accuracy did not improve from 0.04648\n",
      "Epoch 62/200\n",
      "63/63 [==============================] - 9s 142ms/step - loss: 0.7200 - tp: 2841.0000 - fp: 510.0000 - tn: 787530.0000 - fn: 1139.0000 - accuracy: 0.7822 - val_loss: 10.3926 - val_tp: 116.0000 - val_fp: 2023.0000 - val_tn: 786017.0000 - val_fn: 3864.0000 - val_accuracy: 0.0430\n",
      "\n",
      "Epoch 00062: val_accuracy did not improve from 0.04648\n",
      "Epoch 63/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.7169 - tp: 2866.0000 - fp: 518.0000 - tn: 787522.0000 - fn: 1114.0000 - accuracy: 0.7817 - val_loss: 10.4529 - val_tp: 126.0000 - val_fp: 2003.0000 - val_tn: 786037.0000 - val_fn: 3854.0000 - val_accuracy: 0.0437\n",
      "\n",
      "Epoch 00063: val_accuracy did not improve from 0.04648\n",
      "Epoch 64/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.6909 - tp: 2877.0000 - fp: 494.0000 - tn: 787546.0000 - fn: 1103.0000 - accuracy: 0.7804 - val_loss: 10.7650 - val_tp: 103.0000 - val_fp: 2112.0000 - val_tn: 785928.0000 - val_fn: 3877.0000 - val_accuracy: 0.0427\n",
      "\n",
      "Epoch 00064: val_accuracy did not improve from 0.04648\n",
      "Epoch 65/200\n",
      "63/63 [==============================] - 9s 149ms/step - loss: 0.6940 - tp: 2913.0000 - fp: 482.0000 - tn: 787558.0000 - fn: 1067.0000 - accuracy: 0.7930 - val_loss: 10.8905 - val_tp: 108.0000 - val_fp: 2145.0000 - val_tn: 785895.0000 - val_fn: 3872.0000 - val_accuracy: 0.0422\n",
      "\n",
      "Epoch 00065: val_accuracy did not improve from 0.04648\n",
      "Epoch 66/200\n",
      "63/63 [==============================] - 8s 134ms/step - loss: 0.6734 - tp: 2944.0000 - fp: 467.0000 - tn: 787573.0000 - fn: 1036.0000 - accuracy: 0.7977 - val_loss: 10.6901 - val_tp: 111.0000 - val_fp: 2072.0000 - val_tn: 785968.0000 - val_fn: 3869.0000 - val_accuracy: 0.0407\n",
      "\n",
      "Epoch 00066: val_accuracy did not improve from 0.04648\n",
      "Epoch 67/200\n",
      "63/63 [==============================] - 9s 146ms/step - loss: 0.6320 - tp: 3004.0000 - fp: 448.0000 - tn: 787592.0000 - fn: 976.0000 - accuracy: 0.8065 - val_loss: 10.7846 - val_tp: 113.0000 - val_fp: 2136.0000 - val_tn: 785904.0000 - val_fn: 3867.0000 - val_accuracy: 0.0430\n",
      "\n",
      "Epoch 00067: val_accuracy did not improve from 0.04648\n",
      "Epoch 68/200\n",
      "63/63 [==============================] - 10s 156ms/step - loss: 0.6214 - tp: 2997.0000 - fp: 453.0000 - tn: 787587.0000 - fn: 983.0000 - accuracy: 0.8078 - val_loss: 10.8093 - val_tp: 125.0000 - val_fp: 2165.0000 - val_tn: 785875.0000 - val_fn: 3855.0000 - val_accuracy: 0.0430\n",
      "\n",
      "Epoch 00068: val_accuracy did not improve from 0.04648\n",
      "Epoch 69/200\n",
      "63/63 [==============================] - 9s 140ms/step - loss: 0.5939 - tp: 3095.0000 - fp: 423.0000 - tn: 787617.0000 - fn: 885.0000 - accuracy: 0.8249 - val_loss: 11.0559 - val_tp: 111.0000 - val_fp: 2184.0000 - val_tn: 785856.0000 - val_fn: 3869.0000 - val_accuracy: 0.0412\n",
      "\n",
      "Epoch 00069: val_accuracy did not improve from 0.04648\n",
      "Epoch 70/200\n",
      "63/63 [==============================] - 9s 148ms/step - loss: 0.6048 - tp: 3049.0000 - fp: 460.0000 - tn: 787580.0000 - fn: 931.0000 - accuracy: 0.8163 - val_loss: 10.9748 - val_tp: 127.0000 - val_fp: 2222.0000 - val_tn: 785818.0000 - val_fn: 3853.0000 - val_accuracy: 0.0457\n",
      "\n",
      "Epoch 00070: val_accuracy did not improve from 0.04648\n",
      "Epoch 71/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.6144 - tp: 3038.0000 - fp: 458.0000 - tn: 787582.0000 - fn: 942.0000 - accuracy: 0.8146 - val_loss: 11.1789 - val_tp: 129.0000 - val_fp: 2223.0000 - val_tn: 785817.0000 - val_fn: 3851.0000 - val_accuracy: 0.0482\n",
      "\n",
      "Epoch 00071: val_accuracy improved from 0.04648 to 0.04824, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 72/200\n",
      "63/63 [==============================] - 9s 139ms/step - loss: 0.6290 - tp: 3026.0000 - fp: 484.0000 - tn: 787556.0000 - fn: 954.0000 - accuracy: 0.8065 - val_loss: 11.1700 - val_tp: 130.0000 - val_fp: 2224.0000 - val_tn: 785816.0000 - val_fn: 3850.0000 - val_accuracy: 0.0487\n",
      "\n",
      "Epoch 00072: val_accuracy improved from 0.04824 to 0.04874, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 73/200\n",
      "63/63 [==============================] - 9s 135ms/step - loss: 0.6367 - tp: 3034.0000 - fp: 469.0000 - tn: 787571.0000 - fn: 946.0000 - accuracy: 0.8088 - val_loss: 10.9961 - val_tp: 137.0000 - val_fp: 2252.0000 - val_tn: 785788.0000 - val_fn: 3843.0000 - val_accuracy: 0.0497\n",
      "\n",
      "Epoch 00073: val_accuracy improved from 0.04874 to 0.04975, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 74/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.6284 - tp: 3023.0000 - fp: 466.0000 - tn: 787574.0000 - fn: 957.0000 - accuracy: 0.8040 - val_loss: 10.8254 - val_tp: 119.0000 - val_fp: 2189.0000 - val_tn: 785851.0000 - val_fn: 3861.0000 - val_accuracy: 0.0425\n",
      "\n",
      "Epoch 00074: val_accuracy did not improve from 0.04975\n",
      "Epoch 75/200\n",
      "63/63 [==============================] - 10s 156ms/step - loss: 0.5906 - tp: 3081.0000 - fp: 429.0000 - tn: 787611.0000 - fn: 899.0000 - accuracy: 0.8234 - val_loss: 10.8505 - val_tp: 114.0000 - val_fp: 2231.0000 - val_tn: 785809.0000 - val_fn: 3866.0000 - val_accuracy: 0.0412\n",
      "\n",
      "Epoch 00075: val_accuracy did not improve from 0.04975\n",
      "Epoch 76/200\n",
      "63/63 [==============================] - 9s 139ms/step - loss: 0.5632 - tp: 3102.0000 - fp: 433.0000 - tn: 787607.0000 - fn: 878.0000 - accuracy: 0.8259 - val_loss: 10.9653 - val_tp: 116.0000 - val_fp: 2236.0000 - val_tn: 785804.0000 - val_fn: 3864.0000 - val_accuracy: 0.0445\n",
      "\n",
      "Epoch 00076: val_accuracy did not improve from 0.04975\n",
      "Epoch 77/200\n",
      "63/63 [==============================] - 9s 147ms/step - loss: 0.5271 - tp: 3152.0000 - fp: 409.0000 - tn: 787631.0000 - fn: 828.0000 - accuracy: 0.8354 - val_loss: 11.2855 - val_tp: 129.0000 - val_fp: 2288.0000 - val_tn: 785752.0000 - val_fn: 3851.0000 - val_accuracy: 0.0447\n",
      "\n",
      "Epoch 00077: val_accuracy did not improve from 0.04975\n",
      "Epoch 78/200\n",
      "63/63 [==============================] - 9s 137ms/step - loss: 0.5937 - tp: 3116.0000 - fp: 445.0000 - tn: 787595.0000 - fn: 864.0000 - accuracy: 0.8274 - val_loss: 11.3363 - val_tp: 123.0000 - val_fp: 2298.0000 - val_tn: 785742.0000 - val_fn: 3857.0000 - val_accuracy: 0.0452\n",
      "\n",
      "Epoch 00078: val_accuracy did not improve from 0.04975\n",
      "Epoch 79/200\n",
      "63/63 [==============================] - 9s 140ms/step - loss: 0.5380 - tp: 3148.0000 - fp: 422.0000 - tn: 787618.0000 - fn: 832.0000 - accuracy: 0.8317 - val_loss: 11.3609 - val_tp: 123.0000 - val_fp: 2316.0000 - val_tn: 785724.0000 - val_fn: 3857.0000 - val_accuracy: 0.0420\n",
      "\n",
      "Epoch 00079: val_accuracy did not improve from 0.04975\n",
      "Epoch 80/200\n",
      "63/63 [==============================] - 9s 146ms/step - loss: 0.5625 - tp: 3114.0000 - fp: 451.0000 - tn: 787589.0000 - fn: 866.0000 - accuracy: 0.8261 - val_loss: 11.2127 - val_tp: 128.0000 - val_fp: 2230.0000 - val_tn: 785810.0000 - val_fn: 3852.0000 - val_accuracy: 0.0487\n",
      "\n",
      "Epoch 00080: val_accuracy did not improve from 0.04975\n",
      "Epoch 81/200\n",
      "63/63 [==============================] - 9s 135ms/step - loss: 0.5457 - tp: 3153.0000 - fp: 423.0000 - tn: 787617.0000 - fn: 827.0000 - accuracy: 0.8334 - val_loss: 11.4954 - val_tp: 133.0000 - val_fp: 2350.0000 - val_tn: 785690.0000 - val_fn: 3847.0000 - val_accuracy: 0.0457\n",
      "\n",
      "Epoch 00081: val_accuracy did not improve from 0.04975\n",
      "Epoch 82/200\n",
      "63/63 [==============================] - 10s 160ms/step - loss: 0.5103 - tp: 3207.0000 - fp: 404.0000 - tn: 787636.0000 - fn: 773.0000 - accuracy: 0.8450 - val_loss: 11.4963 - val_tp: 137.0000 - val_fp: 2326.0000 - val_tn: 785714.0000 - val_fn: 3843.0000 - val_accuracy: 0.0460\n",
      "\n",
      "Epoch 00082: val_accuracy did not improve from 0.04975\n",
      "Epoch 83/200\n",
      "63/63 [==============================] - 9s 145ms/step - loss: 0.4933 - tp: 3215.0000 - fp: 403.0000 - tn: 787637.0000 - fn: 765.0000 - accuracy: 0.8435 - val_loss: 11.3566 - val_tp: 147.0000 - val_fp: 2341.0000 - val_tn: 785699.0000 - val_fn: 3833.0000 - val_accuracy: 0.0467\n",
      "\n",
      "Epoch 00083: val_accuracy did not improve from 0.04975\n",
      "Epoch 84/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.5406 - tp: 3168.0000 - fp: 429.0000 - tn: 787611.0000 - fn: 812.0000 - accuracy: 0.8369 - val_loss: 11.4202 - val_tp: 133.0000 - val_fp: 2368.0000 - val_tn: 785672.0000 - val_fn: 3847.0000 - val_accuracy: 0.0445\n",
      "\n",
      "Epoch 00084: val_accuracy did not improve from 0.04975\n",
      "Epoch 85/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.5516 - tp: 3149.0000 - fp: 462.0000 - tn: 787578.0000 - fn: 831.0000 - accuracy: 0.8299 - val_loss: 11.2796 - val_tp: 123.0000 - val_fp: 2292.0000 - val_tn: 785748.0000 - val_fn: 3857.0000 - val_accuracy: 0.0450\n",
      "\n",
      "Epoch 00085: val_accuracy did not improve from 0.04975\n",
      "Epoch 86/200\n",
      "63/63 [==============================] - 10s 157ms/step - loss: 0.5170 - tp: 3193.0000 - fp: 408.0000 - tn: 787632.0000 - fn: 787.0000 - accuracy: 0.8405 - val_loss: 11.3791 - val_tp: 140.0000 - val_fp: 2313.0000 - val_tn: 785727.0000 - val_fn: 3840.0000 - val_accuracy: 0.0500\n",
      "\n",
      "Epoch 00086: val_accuracy improved from 0.04975 to 0.05000, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 87/200\n",
      "63/63 [==============================] - 9s 146ms/step - loss: 0.5034 - tp: 3211.0000 - fp: 405.0000 - tn: 787635.0000 - fn: 769.0000 - accuracy: 0.8410 - val_loss: 11.6053 - val_tp: 131.0000 - val_fp: 2382.0000 - val_tn: 785658.0000 - val_fn: 3849.0000 - val_accuracy: 0.0422\n",
      "\n",
      "Epoch 00087: val_accuracy did not improve from 0.05000\n",
      "Epoch 88/200\n",
      "63/63 [==============================] - 8s 132ms/step - loss: 0.4971 - tp: 3227.0000 - fp: 411.0000 - tn: 787629.0000 - fn: 753.0000 - accuracy: 0.8442 - val_loss: 11.5244 - val_tp: 136.0000 - val_fp: 2412.0000 - val_tn: 785628.0000 - val_fn: 3844.0000 - val_accuracy: 0.0440\n",
      "\n",
      "Epoch 00088: val_accuracy did not improve from 0.05000\n",
      "Epoch 89/200\n",
      "63/63 [==============================] - 10s 151ms/step - loss: 0.5007 - tp: 3208.0000 - fp: 416.0000 - tn: 787624.0000 - fn: 772.0000 - accuracy: 0.8430 - val_loss: 11.7273 - val_tp: 137.0000 - val_fp: 2429.0000 - val_tn: 785611.0000 - val_fn: 3843.0000 - val_accuracy: 0.0450\n",
      "\n",
      "Epoch 00089: val_accuracy did not improve from 0.05000\n",
      "Epoch 90/200\n",
      "63/63 [==============================] - 9s 146ms/step - loss: 0.5044 - tp: 3222.0000 - fp: 421.0000 - tn: 787619.0000 - fn: 758.0000 - accuracy: 0.8432 - val_loss: 11.5368 - val_tp: 136.0000 - val_fp: 2348.0000 - val_tn: 785692.0000 - val_fn: 3844.0000 - val_accuracy: 0.0457\n",
      "\n",
      "Epoch 00090: val_accuracy did not improve from 0.05000\n",
      "Epoch 91/200\n",
      "63/63 [==============================] - 9s 137ms/step - loss: 0.5252 - tp: 3222.0000 - fp: 426.0000 - tn: 787614.0000 - fn: 758.0000 - accuracy: 0.8437 - val_loss: 11.4974 - val_tp: 128.0000 - val_fp: 2357.0000 - val_tn: 785683.0000 - val_fn: 3852.0000 - val_accuracy: 0.0465\n",
      "\n",
      "Epoch 00091: val_accuracy did not improve from 0.05000\n",
      "Epoch 92/200\n",
      "63/63 [==============================] - 9s 137ms/step - loss: 0.4850 - tp: 3252.0000 - fp: 401.0000 - tn: 787639.0000 - fn: 728.0000 - accuracy: 0.8475 - val_loss: 11.3649 - val_tp: 127.0000 - val_fp: 2336.0000 - val_tn: 785704.0000 - val_fn: 3853.0000 - val_accuracy: 0.0442\n",
      "\n",
      "Epoch 00092: val_accuracy did not improve from 0.05000\n",
      "Epoch 93/200\n",
      "63/63 [==============================] - 11s 168ms/step - loss: 0.4823 - tp: 3280.0000 - fp: 378.0000 - tn: 787662.0000 - fn: 700.0000 - accuracy: 0.8573 - val_loss: 11.5548 - val_tp: 122.0000 - val_fp: 2376.0000 - val_tn: 785664.0000 - val_fn: 3858.0000 - val_accuracy: 0.0435\n",
      "\n",
      "Epoch 00093: val_accuracy did not improve from 0.05000\n",
      "Epoch 94/200\n",
      "63/63 [==============================] - 9s 136ms/step - loss: 0.4425 - tp: 3324.0000 - fp: 355.0000 - tn: 787685.0000 - fn: 656.0000 - accuracy: 0.8678 - val_loss: 11.6590 - val_tp: 125.0000 - val_fp: 2410.0000 - val_tn: 785630.0000 - val_fn: 3855.0000 - val_accuracy: 0.0447\n",
      "\n",
      "Epoch 00094: val_accuracy did not improve from 0.05000\n",
      "Epoch 95/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.4151 - tp: 3350.0000 - fp: 342.0000 - tn: 787698.0000 - fn: 630.0000 - accuracy: 0.8701 - val_loss: 11.8472 - val_tp: 148.0000 - val_fp: 2415.0000 - val_tn: 785625.0000 - val_fn: 3832.0000 - val_accuracy: 0.0485\n",
      "\n",
      "Epoch 00095: val_accuracy did not improve from 0.05000\n",
      "Epoch 96/200\n",
      "63/63 [==============================] - 10s 159ms/step - loss: 0.4371 - tp: 3316.0000 - fp: 365.0000 - tn: 787675.0000 - fn: 664.0000 - accuracy: 0.8641 - val_loss: 11.7255 - val_tp: 138.0000 - val_fp: 2350.0000 - val_tn: 785690.0000 - val_fn: 3842.0000 - val_accuracy: 0.0472\n",
      "\n",
      "Epoch 00096: val_accuracy did not improve from 0.05000\n",
      "Epoch 97/200\n",
      "63/63 [==============================] - 9s 147ms/step - loss: 0.4293 - tp: 3335.0000 - fp: 361.0000 - tn: 787679.0000 - fn: 645.0000 - accuracy: 0.8693 - val_loss: 11.9906 - val_tp: 147.0000 - val_fp: 2464.0000 - val_tn: 785576.0000 - val_fn: 3833.0000 - val_accuracy: 0.0492\n",
      "\n",
      "Epoch 00097: val_accuracy did not improve from 0.05000\n",
      "Epoch 98/200\n",
      "63/63 [==============================] - 8s 134ms/step - loss: 0.4524 - tp: 3303.0000 - fp: 416.0000 - tn: 787624.0000 - fn: 677.0000 - accuracy: 0.8558 - val_loss: 11.6999 - val_tp: 136.0000 - val_fp: 2401.0000 - val_tn: 785639.0000 - val_fn: 3844.0000 - val_accuracy: 0.0430\n",
      "\n",
      "Epoch 00098: val_accuracy did not improve from 0.05000\n",
      "Epoch 99/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.4347 - tp: 3321.0000 - fp: 401.0000 - tn: 787639.0000 - fn: 659.0000 - accuracy: 0.8628 - val_loss: 12.1130 - val_tp: 134.0000 - val_fp: 2498.0000 - val_tn: 785542.0000 - val_fn: 3846.0000 - val_accuracy: 0.0440\n",
      "\n",
      "Epoch 00099: val_accuracy did not improve from 0.05000\n",
      "Epoch 100/200\n",
      "63/63 [==============================] - 10s 166ms/step - loss: 0.4105 - tp: 3356.0000 - fp: 348.0000 - tn: 787692.0000 - fn: 624.0000 - accuracy: 0.8731 - val_loss: 12.0308 - val_tp: 127.0000 - val_fp: 2459.0000 - val_tn: 785581.0000 - val_fn: 3853.0000 - val_accuracy: 0.0432\n",
      "\n",
      "Epoch 00100: val_accuracy did not improve from 0.05000\n",
      "Epoch 101/200\n",
      "63/63 [==============================] - 9s 140ms/step - loss: 0.4535 - tp: 3326.0000 - fp: 391.0000 - tn: 787649.0000 - fn: 654.0000 - accuracy: 0.8590 - val_loss: 11.9796 - val_tp: 132.0000 - val_fp: 2508.0000 - val_tn: 785532.0000 - val_fn: 3848.0000 - val_accuracy: 0.0450\n",
      "\n",
      "Epoch 00101: val_accuracy did not improve from 0.05000\n",
      "Epoch 102/200\n",
      "63/63 [==============================] - 9s 139ms/step - loss: 0.4360 - tp: 3309.0000 - fp: 374.0000 - tn: 787666.0000 - fn: 671.0000 - accuracy: 0.8611 - val_loss: 12.0457 - val_tp: 148.0000 - val_fp: 2455.0000 - val_tn: 785585.0000 - val_fn: 3832.0000 - val_accuracy: 0.0485\n",
      "\n",
      "Epoch 00102: val_accuracy did not improve from 0.05000\n",
      "Epoch 103/200\n",
      "63/63 [==============================] - 11s 171ms/step - loss: 0.4375 - tp: 3333.0000 - fp: 401.0000 - tn: 787639.0000 - fn: 647.0000 - accuracy: 0.8638 - val_loss: 12.2791 - val_tp: 136.0000 - val_fp: 2570.0000 - val_tn: 785470.0000 - val_fn: 3844.0000 - val_accuracy: 0.0407\n",
      "\n",
      "Epoch 00103: val_accuracy did not improve from 0.05000\n",
      "Epoch 104/200\n",
      "63/63 [==============================] - 9s 140ms/step - loss: 0.4162 - tp: 3369.0000 - fp: 348.0000 - tn: 787692.0000 - fn: 611.0000 - accuracy: 0.8726 - val_loss: 12.0318 - val_tp: 141.0000 - val_fp: 2481.0000 - val_tn: 785559.0000 - val_fn: 3839.0000 - val_accuracy: 0.0445\n",
      "\n",
      "Epoch 00104: val_accuracy did not improve from 0.05000\n",
      "Epoch 105/200\n",
      "63/63 [==============================] - 9s 148ms/step - loss: 0.4230 - tp: 3379.0000 - fp: 341.0000 - tn: 787699.0000 - fn: 601.0000 - accuracy: 0.8756 - val_loss: 11.9746 - val_tp: 136.0000 - val_fp: 2471.0000 - val_tn: 785569.0000 - val_fn: 3844.0000 - val_accuracy: 0.0447\n",
      "\n",
      "Epoch 00105: val_accuracy did not improve from 0.05000\n",
      "Epoch 106/200\n",
      "63/63 [==============================] - 10s 162ms/step - loss: 0.4126 - tp: 3365.0000 - fp: 358.0000 - tn: 787682.0000 - fn: 615.0000 - accuracy: 0.8721 - val_loss: 12.2655 - val_tp: 135.0000 - val_fp: 2546.0000 - val_tn: 785494.0000 - val_fn: 3845.0000 - val_accuracy: 0.0427\n",
      "\n",
      "Epoch 00106: val_accuracy did not improve from 0.05000\n",
      "Epoch 107/200\n",
      "63/63 [==============================] - 8s 135ms/step - loss: 0.3916 - tp: 3399.0000 - fp: 340.0000 - tn: 787700.0000 - fn: 581.0000 - accuracy: 0.8802 - val_loss: 12.1174 - val_tp: 141.0000 - val_fp: 2452.0000 - val_tn: 785588.0000 - val_fn: 3839.0000 - val_accuracy: 0.0427\n",
      "\n",
      "Epoch 00107: val_accuracy did not improve from 0.05000\n",
      "Epoch 108/200\n",
      "63/63 [==============================] - 8s 135ms/step - loss: 0.3739 - tp: 3417.0000 - fp: 313.0000 - tn: 787727.0000 - fn: 563.0000 - accuracy: 0.8842 - val_loss: 12.3011 - val_tp: 135.0000 - val_fp: 2495.0000 - val_tn: 785545.0000 - val_fn: 3845.0000 - val_accuracy: 0.0432\n",
      "\n",
      "Epoch 00108: val_accuracy did not improve from 0.05000\n",
      "Epoch 109/200\n",
      "63/63 [==============================] - 9s 147ms/step - loss: 0.3927 - tp: 3409.0000 - fp: 340.0000 - tn: 787700.0000 - fn: 571.0000 - accuracy: 0.8784 - val_loss: 12.2599 - val_tp: 134.0000 - val_fp: 2545.0000 - val_tn: 785495.0000 - val_fn: 3846.0000 - val_accuracy: 0.0432\n",
      "\n",
      "Epoch 00109: val_accuracy did not improve from 0.05000\n",
      "Epoch 110/200\n",
      "63/63 [==============================] - 10s 151ms/step - loss: 0.3945 - tp: 3395.0000 - fp: 360.0000 - tn: 787680.0000 - fn: 585.0000 - accuracy: 0.8749 - val_loss: 12.2033 - val_tp: 131.0000 - val_fp: 2560.0000 - val_tn: 785480.0000 - val_fn: 3849.0000 - val_accuracy: 0.0442\n",
      "\n",
      "Epoch 00110: val_accuracy did not improve from 0.05000\n",
      "Epoch 111/200\n",
      "63/63 [==============================] - 9s 139ms/step - loss: 0.3741 - tp: 3409.0000 - fp: 344.0000 - tn: 787696.0000 - fn: 571.0000 - accuracy: 0.8809 - val_loss: 12.5075 - val_tp: 144.0000 - val_fp: 2587.0000 - val_tn: 785453.0000 - val_fn: 3836.0000 - val_accuracy: 0.0455\n",
      "\n",
      "Epoch 00111: val_accuracy did not improve from 0.05000\n",
      "Epoch 112/200\n",
      "63/63 [==============================] - 9s 149ms/step - loss: 0.3969 - tp: 3384.0000 - fp: 352.0000 - tn: 787688.0000 - fn: 596.0000 - accuracy: 0.8769 - val_loss: 11.9697 - val_tp: 129.0000 - val_fp: 2521.0000 - val_tn: 785519.0000 - val_fn: 3851.0000 - val_accuracy: 0.0427\n",
      "\n",
      "Epoch 00112: val_accuracy did not improve from 0.05000\n",
      "Epoch 113/200\n",
      "63/63 [==============================] - 10s 162ms/step - loss: 0.3828 - tp: 3417.0000 - fp: 330.0000 - tn: 787710.0000 - fn: 563.0000 - accuracy: 0.8804 - val_loss: 12.2151 - val_tp: 129.0000 - val_fp: 2575.0000 - val_tn: 785465.0000 - val_fn: 3851.0000 - val_accuracy: 0.0415\n",
      "\n",
      "Epoch 00113: val_accuracy did not improve from 0.05000\n",
      "Epoch 114/200\n",
      "63/63 [==============================] - 9s 137ms/step - loss: 0.4240 - tp: 3370.0000 - fp: 371.0000 - tn: 787669.0000 - fn: 610.0000 - accuracy: 0.8709 - val_loss: 12.1038 - val_tp: 138.0000 - val_fp: 2557.0000 - val_tn: 785483.0000 - val_fn: 3842.0000 - val_accuracy: 0.0440\n",
      "\n",
      "Epoch 00114: val_accuracy did not improve from 0.05000\n",
      "Epoch 115/200\n",
      "63/63 [==============================] - 9s 144ms/step - loss: 0.4053 - tp: 3361.0000 - fp: 370.0000 - tn: 787670.0000 - fn: 619.0000 - accuracy: 0.8671 - val_loss: 12.3745 - val_tp: 135.0000 - val_fp: 2610.0000 - val_tn: 785430.0000 - val_fn: 3845.0000 - val_accuracy: 0.0425\n",
      "\n",
      "Epoch 00115: val_accuracy did not improve from 0.05000\n",
      "Epoch 116/200\n",
      "63/63 [==============================] - 8s 131ms/step - loss: 0.4282 - tp: 3361.0000 - fp: 380.0000 - tn: 787660.0000 - fn: 619.0000 - accuracy: 0.8691 - val_loss: 12.3619 - val_tp: 139.0000 - val_fp: 2598.0000 - val_tn: 785442.0000 - val_fn: 3841.0000 - val_accuracy: 0.0442\n",
      "\n",
      "Epoch 00116: val_accuracy did not improve from 0.05000\n",
      "Epoch 117/200\n",
      "63/63 [==============================] - 10s 154ms/step - loss: 0.4186 - tp: 3369.0000 - fp: 360.0000 - tn: 787680.0000 - fn: 611.0000 - accuracy: 0.8726 - val_loss: 12.1200 - val_tp: 137.0000 - val_fp: 2496.0000 - val_tn: 785544.0000 - val_fn: 3843.0000 - val_accuracy: 0.0480\n",
      "\n",
      "Epoch 00117: val_accuracy did not improve from 0.05000\n",
      "Epoch 118/200\n",
      "63/63 [==============================] - 8s 133ms/step - loss: 0.3656 - tp: 3439.0000 - fp: 302.0000 - tn: 787738.0000 - fn: 541.0000 - accuracy: 0.8884 - val_loss: 12.0911 - val_tp: 131.0000 - val_fp: 2530.0000 - val_tn: 785510.0000 - val_fn: 3849.0000 - val_accuracy: 0.0425\n",
      "\n",
      "Epoch 00118: val_accuracy did not improve from 0.05000\n",
      "Epoch 119/200\n",
      "63/63 [==============================] - 9s 142ms/step - loss: 0.3710 - tp: 3435.0000 - fp: 323.0000 - tn: 787717.0000 - fn: 545.0000 - accuracy: 0.8874 - val_loss: 12.0785 - val_tp: 137.0000 - val_fp: 2528.0000 - val_tn: 785512.0000 - val_fn: 3843.0000 - val_accuracy: 0.0442\n",
      "\n",
      "Epoch 00119: val_accuracy did not improve from 0.05000\n",
      "Epoch 120/200\n",
      "63/63 [==============================] - 10s 155ms/step - loss: 0.3606 - tp: 3457.0000 - fp: 308.0000 - tn: 787732.0000 - fn: 523.0000 - accuracy: 0.8892 - val_loss: 12.3094 - val_tp: 137.0000 - val_fp: 2572.0000 - val_tn: 785468.0000 - val_fn: 3843.0000 - val_accuracy: 0.0417\n",
      "\n",
      "Epoch 00120: val_accuracy did not improve from 0.05000\n",
      "Epoch 121/200\n",
      "63/63 [==============================] - 9s 141ms/step - loss: 0.3806 - tp: 3417.0000 - fp: 356.0000 - tn: 787684.0000 - fn: 563.0000 - accuracy: 0.8796 - val_loss: 12.2221 - val_tp: 141.0000 - val_fp: 2571.0000 - val_tn: 785469.0000 - val_fn: 3839.0000 - val_accuracy: 0.0447\n",
      "\n",
      "Epoch 00121: val_accuracy did not improve from 0.05000\n",
      "Epoch 122/200\n",
      "63/63 [==============================] - 9s 147ms/step - loss: 0.3787 - tp: 3418.0000 - fp: 362.0000 - tn: 787678.0000 - fn: 562.0000 - accuracy: 0.8822 - val_loss: 12.2432 - val_tp: 138.0000 - val_fp: 2592.0000 - val_tn: 785448.0000 - val_fn: 3842.0000 - val_accuracy: 0.0437\n",
      "\n",
      "Epoch 00122: val_accuracy did not improve from 0.05000\n",
      "Epoch 123/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.3641 - tp: 3440.0000 - fp: 329.0000 - tn: 787711.0000 - fn: 540.0000 - accuracy: 0.8869 - val_loss: 12.3955 - val_tp: 146.0000 - val_fp: 2613.0000 - val_tn: 785427.0000 - val_fn: 3834.0000 - val_accuracy: 0.0457\n",
      "\n",
      "Epoch 00123: val_accuracy did not improve from 0.05000\n",
      "Epoch 124/200\n",
      "63/63 [==============================] - 10s 164ms/step - loss: 0.4095 - tp: 3367.0000 - fp: 360.0000 - tn: 787680.0000 - fn: 613.0000 - accuracy: 0.8711 - val_loss: 12.2741 - val_tp: 143.0000 - val_fp: 2533.0000 - val_tn: 785507.0000 - val_fn: 3837.0000 - val_accuracy: 0.0460\n",
      "\n",
      "Epoch 00124: val_accuracy did not improve from 0.05000\n",
      "Epoch 125/200\n",
      "63/63 [==============================] - 9s 141ms/step - loss: 0.3600 - tp: 3435.0000 - fp: 300.0000 - tn: 787740.0000 - fn: 545.0000 - accuracy: 0.8877 - val_loss: 12.1587 - val_tp: 145.0000 - val_fp: 2495.0000 - val_tn: 785545.0000 - val_fn: 3835.0000 - val_accuracy: 0.0462\n",
      "\n",
      "Epoch 00125: val_accuracy did not improve from 0.05000\n",
      "Epoch 126/200\n",
      "63/63 [==============================] - 9s 142ms/step - loss: 0.3565 - tp: 3463.0000 - fp: 331.0000 - tn: 787709.0000 - fn: 517.0000 - accuracy: 0.8884 - val_loss: 12.3205 - val_tp: 150.0000 - val_fp: 2590.0000 - val_tn: 785450.0000 - val_fn: 3830.0000 - val_accuracy: 0.0432\n",
      "\n",
      "Epoch 00126: val_accuracy did not improve from 0.05000\n",
      "Epoch 127/200\n",
      "63/63 [==============================] - 9s 140ms/step - loss: 0.3480 - tp: 3454.0000 - fp: 332.0000 - tn: 787708.0000 - fn: 526.0000 - accuracy: 0.8877 - val_loss: 12.5133 - val_tp: 154.0000 - val_fp: 2585.0000 - val_tn: 785455.0000 - val_fn: 3826.0000 - val_accuracy: 0.0475\n",
      "\n",
      "Epoch 00127: val_accuracy did not improve from 0.05000\n",
      "Epoch 128/200\n",
      "63/63 [==============================] - 11s 170ms/step - loss: 0.3677 - tp: 3459.0000 - fp: 312.0000 - tn: 787728.0000 - fn: 521.0000 - accuracy: 0.8917 - val_loss: 12.6199 - val_tp: 136.0000 - val_fp: 2603.0000 - val_tn: 785437.0000 - val_fn: 3844.0000 - val_accuracy: 0.0450\n",
      "\n",
      "Epoch 00128: val_accuracy did not improve from 0.05000\n",
      "Epoch 129/200\n",
      "63/63 [==============================] - 9s 137ms/step - loss: 0.3675 - tp: 3433.0000 - fp: 331.0000 - tn: 787709.0000 - fn: 547.0000 - accuracy: 0.8849 - val_loss: 12.5442 - val_tp: 158.0000 - val_fp: 2562.0000 - val_tn: 785478.0000 - val_fn: 3822.0000 - val_accuracy: 0.0505\n",
      "\n",
      "Epoch 00129: val_accuracy improved from 0.05000 to 0.05050, saving model to ./checkpoints/checkpoint.ckpt\n",
      "Epoch 130/200\n",
      "63/63 [==============================] - 9s 139ms/step - loss: 0.3593 - tp: 3453.0000 - fp: 310.0000 - tn: 787730.0000 - fn: 527.0000 - accuracy: 0.8917 - val_loss: 12.4436 - val_tp: 147.0000 - val_fp: 2592.0000 - val_tn: 785448.0000 - val_fn: 3833.0000 - val_accuracy: 0.0455\n",
      "\n",
      "Epoch 00130: val_accuracy did not improve from 0.05050\n",
      "Epoch 131/200\n",
      "63/63 [==============================] - 10s 157ms/step - loss: 0.3579 - tp: 3452.0000 - fp: 342.0000 - tn: 787698.0000 - fn: 528.0000 - accuracy: 0.8859 - val_loss: 12.4725 - val_tp: 143.0000 - val_fp: 2631.0000 - val_tn: 785409.0000 - val_fn: 3837.0000 - val_accuracy: 0.0455\n",
      "\n",
      "Epoch 00131: val_accuracy did not improve from 0.05050\n",
      "Epoch 132/200\n",
      "63/63 [==============================] - 9s 137ms/step - loss: 0.3469 - tp: 3458.0000 - fp: 341.0000 - tn: 787699.0000 - fn: 522.0000 - accuracy: 0.8884 - val_loss: 12.6185 - val_tp: 136.0000 - val_fp: 2624.0000 - val_tn: 785416.0000 - val_fn: 3844.0000 - val_accuracy: 0.0412\n",
      "\n",
      "Epoch 00132: val_accuracy did not improve from 0.05050\n",
      "Epoch 133/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.3328 - tp: 3485.0000 - fp: 315.0000 - tn: 787725.0000 - fn: 495.0000 - accuracy: 0.8957 - val_loss: 12.7134 - val_tp: 137.0000 - val_fp: 2619.0000 - val_tn: 785421.0000 - val_fn: 3843.0000 - val_accuracy: 0.0442\n",
      "\n",
      "Epoch 00133: val_accuracy did not improve from 0.05050\n",
      "Epoch 134/200\n",
      "63/63 [==============================] - 11s 176ms/step - loss: 0.3352 - tp: 3473.0000 - fp: 288.0000 - tn: 787752.0000 - fn: 507.0000 - accuracy: 0.8965 - val_loss: 12.6193 - val_tp: 126.0000 - val_fp: 2628.0000 - val_tn: 785412.0000 - val_fn: 3854.0000 - val_accuracy: 0.0417\n",
      "\n",
      "Epoch 00134: val_accuracy did not improve from 0.05050\n",
      "Epoch 135/200\n",
      "63/63 [==============================] - 8s 132ms/step - loss: 0.3601 - tp: 3465.0000 - fp: 335.0000 - tn: 787705.0000 - fn: 515.0000 - accuracy: 0.8892 - val_loss: 12.6698 - val_tp: 126.0000 - val_fp: 2614.0000 - val_tn: 785426.0000 - val_fn: 3854.0000 - val_accuracy: 0.0397\n",
      "\n",
      "Epoch 00135: val_accuracy did not improve from 0.05050\n",
      "Epoch 136/200\n",
      "63/63 [==============================] - 8s 135ms/step - loss: 0.3494 - tp: 3486.0000 - fp: 306.0000 - tn: 787734.0000 - fn: 494.0000 - accuracy: 0.8965 - val_loss: 12.6370 - val_tp: 140.0000 - val_fp: 2635.0000 - val_tn: 785405.0000 - val_fn: 3840.0000 - val_accuracy: 0.0435\n",
      "\n",
      "Epoch 00136: val_accuracy did not improve from 0.05050\n",
      "Epoch 137/200\n",
      "63/63 [==============================] - 11s 178ms/step - loss: 0.3179 - tp: 3508.0000 - fp: 274.0000 - tn: 787766.0000 - fn: 472.0000 - accuracy: 0.9028 - val_loss: 12.6124 - val_tp: 133.0000 - val_fp: 2610.0000 - val_tn: 785430.0000 - val_fn: 3847.0000 - val_accuracy: 0.0427\n",
      "\n",
      "Epoch 00137: val_accuracy did not improve from 0.05050\n",
      "Epoch 138/200\n",
      "63/63 [==============================] - 9s 137ms/step - loss: 0.3242 - tp: 3512.0000 - fp: 291.0000 - tn: 787749.0000 - fn: 468.0000 - accuracy: 0.9028 - val_loss: 12.7474 - val_tp: 147.0000 - val_fp: 2655.0000 - val_tn: 785385.0000 - val_fn: 3833.0000 - val_accuracy: 0.0440\n",
      "\n",
      "Epoch 00138: val_accuracy did not improve from 0.05050\n",
      "Epoch 139/200\n",
      "63/63 [==============================] - 11s 169ms/step - loss: 0.3159 - tp: 3510.0000 - fp: 296.0000 - tn: 787744.0000 - fn: 470.0000 - accuracy: 0.8995 - val_loss: 12.6778 - val_tp: 146.0000 - val_fp: 2638.0000 - val_tn: 785402.0000 - val_fn: 3834.0000 - val_accuracy: 0.0462\n",
      "\n",
      "Epoch 00139: val_accuracy did not improve from 0.05050\n",
      "Epoch 140/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.2989 - tp: 3554.0000 - fp: 253.0000 - tn: 787787.0000 - fn: 426.0000 - accuracy: 0.9093 - val_loss: 12.8297 - val_tp: 143.0000 - val_fp: 2623.0000 - val_tn: 785417.0000 - val_fn: 3837.0000 - val_accuracy: 0.0440\n",
      "\n",
      "Epoch 00140: val_accuracy did not improve from 0.05050\n",
      "Epoch 141/200\n",
      "63/63 [==============================] - 9s 147ms/step - loss: 0.3355 - tp: 3492.0000 - fp: 301.0000 - tn: 787739.0000 - fn: 488.0000 - accuracy: 0.8950 - val_loss: 12.6564 - val_tp: 140.0000 - val_fp: 2633.0000 - val_tn: 785407.0000 - val_fn: 3840.0000 - val_accuracy: 0.0457\n",
      "\n",
      "Epoch 00141: val_accuracy did not improve from 0.05050\n",
      "Epoch 142/200\n",
      "63/63 [==============================] - 11s 169ms/step - loss: 0.3397 - tp: 3470.0000 - fp: 306.0000 - tn: 787734.0000 - fn: 510.0000 - accuracy: 0.8922 - val_loss: 12.6596 - val_tp: 136.0000 - val_fp: 2662.0000 - val_tn: 785378.0000 - val_fn: 3844.0000 - val_accuracy: 0.0422\n",
      "\n",
      "Epoch 00142: val_accuracy did not improve from 0.05050\n",
      "Epoch 143/200\n",
      "63/63 [==============================] - 8s 135ms/step - loss: 0.3486 - tp: 3478.0000 - fp: 303.0000 - tn: 787737.0000 - fn: 502.0000 - accuracy: 0.8922 - val_loss: 12.4307 - val_tp: 151.0000 - val_fp: 2645.0000 - val_tn: 785395.0000 - val_fn: 3829.0000 - val_accuracy: 0.0455\n",
      "\n",
      "Epoch 00143: val_accuracy did not improve from 0.05050\n",
      "Epoch 144/200\n",
      "63/63 [==============================] - 9s 135ms/step - loss: 0.2979 - tp: 3510.0000 - fp: 292.0000 - tn: 787748.0000 - fn: 470.0000 - accuracy: 0.9008 - val_loss: 12.4580 - val_tp: 136.0000 - val_fp: 2626.0000 - val_tn: 785414.0000 - val_fn: 3844.0000 - val_accuracy: 0.0447\n",
      "\n",
      "Epoch 00144: val_accuracy did not improve from 0.05050\n",
      "Epoch 145/200\n",
      "63/63 [==============================] - 9s 150ms/step - loss: 0.3119 - tp: 3533.0000 - fp: 297.0000 - tn: 787743.0000 - fn: 447.0000 - accuracy: 0.9050 - val_loss: 12.5942 - val_tp: 131.0000 - val_fp: 2635.0000 - val_tn: 785405.0000 - val_fn: 3849.0000 - val_accuracy: 0.0425\n",
      "\n",
      "Epoch 00145: val_accuracy did not improve from 0.05050\n",
      "Epoch 146/200\n",
      "63/63 [==============================] - 9s 140ms/step - loss: 0.3292 - tp: 3486.0000 - fp: 300.0000 - tn: 787740.0000 - fn: 494.0000 - accuracy: 0.8952 - val_loss: 12.4646 - val_tp: 152.0000 - val_fp: 2597.0000 - val_tn: 785443.0000 - val_fn: 3828.0000 - val_accuracy: 0.0462\n",
      "\n",
      "Epoch 00146: val_accuracy did not improve from 0.05050\n",
      "Epoch 147/200\n",
      "63/63 [==============================] - 9s 140ms/step - loss: 0.3178 - tp: 3531.0000 - fp: 284.0000 - tn: 787756.0000 - fn: 449.0000 - accuracy: 0.9043 - val_loss: 12.8553 - val_tp: 141.0000 - val_fp: 2667.0000 - val_tn: 785373.0000 - val_fn: 3839.0000 - val_accuracy: 0.0440\n",
      "\n",
      "Epoch 00147: val_accuracy did not improve from 0.05050\n",
      "Epoch 148/200\n",
      "63/63 [==============================] - 11s 171ms/step - loss: 0.3301 - tp: 3511.0000 - fp: 299.0000 - tn: 787741.0000 - fn: 469.0000 - accuracy: 0.8987 - val_loss: 12.7924 - val_tp: 137.0000 - val_fp: 2680.0000 - val_tn: 785360.0000 - val_fn: 3843.0000 - val_accuracy: 0.0462\n",
      "\n",
      "Epoch 00148: val_accuracy did not improve from 0.05050\n",
      "Epoch 149/200\n",
      "63/63 [==============================] - 9s 145ms/step - loss: 0.3391 - tp: 3504.0000 - fp: 327.0000 - tn: 787713.0000 - fn: 476.0000 - accuracy: 0.8957 - val_loss: 12.4725 - val_tp: 142.0000 - val_fp: 2607.0000 - val_tn: 785433.0000 - val_fn: 3838.0000 - val_accuracy: 0.0422\n",
      "\n",
      "Epoch 00149: val_accuracy did not improve from 0.05050\n",
      "Epoch 150/200\n",
      "63/63 [==============================] - 9s 140ms/step - loss: 0.2971 - tp: 3540.0000 - fp: 273.0000 - tn: 787767.0000 - fn: 440.0000 - accuracy: 0.9060 - val_loss: 12.7698 - val_tp: 147.0000 - val_fp: 2647.0000 - val_tn: 785393.0000 - val_fn: 3833.0000 - val_accuracy: 0.0462\n",
      "\n",
      "Epoch 00150: val_accuracy did not improve from 0.05050\n",
      "Epoch 151/200\n",
      "63/63 [==============================] - 11s 180ms/step - loss: 0.2605 - tp: 3588.0000 - fp: 244.0000 - tn: 787796.0000 - fn: 392.0000 - accuracy: 0.9141 - val_loss: 12.8273 - val_tp: 148.0000 - val_fp: 2640.0000 - val_tn: 785400.0000 - val_fn: 3832.0000 - val_accuracy: 0.0447\n",
      "\n",
      "Epoch 00151: val_accuracy did not improve from 0.05050\n",
      "Epoch 152/200\n",
      "63/63 [==============================] - 9s 150ms/step - loss: 0.2918 - tp: 3565.0000 - fp: 251.0000 - tn: 787789.0000 - fn: 415.0000 - accuracy: 0.9111 - val_loss: 12.9278 - val_tp: 156.0000 - val_fp: 2646.0000 - val_tn: 785394.0000 - val_fn: 3824.0000 - val_accuracy: 0.0480\n",
      "\n",
      "Epoch 00152: val_accuracy did not improve from 0.05050\n",
      "Epoch 153/200\n",
      "63/63 [==============================] - 8s 133ms/step - loss: 0.2850 - tp: 3568.0000 - fp: 280.0000 - tn: 787760.0000 - fn: 412.0000 - accuracy: 0.9095 - val_loss: 12.8133 - val_tp: 142.0000 - val_fp: 2632.0000 - val_tn: 785408.0000 - val_fn: 3838.0000 - val_accuracy: 0.0425\n",
      "\n",
      "Epoch 00153: val_accuracy did not improve from 0.05050\n",
      "Epoch 154/200\n",
      "63/63 [==============================] - 9s 145ms/step - loss: 0.3069 - tp: 3545.0000 - fp: 277.0000 - tn: 787763.0000 - fn: 435.0000 - accuracy: 0.9073 - val_loss: 12.8712 - val_tp: 131.0000 - val_fp: 2710.0000 - val_tn: 785330.0000 - val_fn: 3849.0000 - val_accuracy: 0.0397\n",
      "\n",
      "Epoch 00154: val_accuracy did not improve from 0.05050\n",
      "Epoch 155/200\n",
      "63/63 [==============================] - 11s 172ms/step - loss: 0.3044 - tp: 3535.0000 - fp: 261.0000 - tn: 787779.0000 - fn: 445.0000 - accuracy: 0.9048 - val_loss: 12.9664 - val_tp: 130.0000 - val_fp: 2639.0000 - val_tn: 785401.0000 - val_fn: 3850.0000 - val_accuracy: 0.0430\n",
      "\n",
      "Epoch 00155: val_accuracy did not improve from 0.05050\n",
      "Epoch 156/200\n",
      "63/63 [==============================] - 9s 142ms/step - loss: 0.2911 - tp: 3538.0000 - fp: 281.0000 - tn: 787759.0000 - fn: 442.0000 - accuracy: 0.9053 - val_loss: 13.0391 - val_tp: 136.0000 - val_fp: 2700.0000 - val_tn: 785340.0000 - val_fn: 3844.0000 - val_accuracy: 0.0412\n",
      "\n",
      "Epoch 00156: val_accuracy did not improve from 0.05050\n",
      "Epoch 157/200\n",
      "63/63 [==============================] - 9s 148ms/step - loss: 0.2811 - tp: 3571.0000 - fp: 261.0000 - tn: 787779.0000 - fn: 409.0000 - accuracy: 0.9113 - val_loss: 13.0584 - val_tp: 135.0000 - val_fp: 2754.0000 - val_tn: 785286.0000 - val_fn: 3845.0000 - val_accuracy: 0.0417\n",
      "\n",
      "Epoch 00157: val_accuracy did not improve from 0.05050\n",
      "Epoch 158/200\n",
      "63/63 [==============================] - 9s 137ms/step - loss: 0.2976 - tp: 3570.0000 - fp: 275.0000 - tn: 787765.0000 - fn: 410.0000 - accuracy: 0.9108 - val_loss: 13.0670 - val_tp: 132.0000 - val_fp: 2676.0000 - val_tn: 785364.0000 - val_fn: 3848.0000 - val_accuracy: 0.0394\n",
      "\n",
      "Epoch 00158: val_accuracy did not improve from 0.05050\n",
      "Epoch 159/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.2954 - tp: 3537.0000 - fp: 278.0000 - tn: 787762.0000 - fn: 443.0000 - accuracy: 0.9075 - val_loss: 13.0890 - val_tp: 142.0000 - val_fp: 2766.0000 - val_tn: 785274.0000 - val_fn: 3838.0000 - val_accuracy: 0.0427\n",
      "\n",
      "Epoch 00159: val_accuracy did not improve from 0.05050\n",
      "Epoch 160/200\n",
      "63/63 [==============================] - 11s 176ms/step - loss: 0.2740 - tp: 3578.0000 - fp: 245.0000 - tn: 787795.0000 - fn: 402.0000 - accuracy: 0.9163 - val_loss: 13.4107 - val_tp: 137.0000 - val_fp: 2689.0000 - val_tn: 785351.0000 - val_fn: 3843.0000 - val_accuracy: 0.0447\n",
      "\n",
      "Epoch 00160: val_accuracy did not improve from 0.05050\n",
      "Epoch 161/200\n",
      "63/63 [==============================] - 9s 144ms/step - loss: 0.3081 - tp: 3532.0000 - fp: 272.0000 - tn: 787768.0000 - fn: 448.0000 - accuracy: 0.9070 - val_loss: 13.0158 - val_tp: 140.0000 - val_fp: 2673.0000 - val_tn: 785367.0000 - val_fn: 3840.0000 - val_accuracy: 0.0427\n",
      "\n",
      "Epoch 00161: val_accuracy did not improve from 0.05050\n",
      "Epoch 162/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.2855 - tp: 3557.0000 - fp: 264.0000 - tn: 787776.0000 - fn: 423.0000 - accuracy: 0.9116 - val_loss: 13.2074 - val_tp: 133.0000 - val_fp: 2716.0000 - val_tn: 785324.0000 - val_fn: 3847.0000 - val_accuracy: 0.0412\n",
      "\n",
      "Epoch 00162: val_accuracy did not improve from 0.05050\n",
      "Epoch 163/200\n",
      "63/63 [==============================] - 9s 141ms/step - loss: 0.2919 - tp: 3542.0000 - fp: 276.0000 - tn: 787764.0000 - fn: 438.0000 - accuracy: 0.9055 - val_loss: 12.9462 - val_tp: 143.0000 - val_fp: 2736.0000 - val_tn: 785304.0000 - val_fn: 3837.0000 - val_accuracy: 0.0430\n",
      "\n",
      "Epoch 00163: val_accuracy did not improve from 0.05050\n",
      "Epoch 164/200\n",
      "63/63 [==============================] - 9s 136ms/step - loss: 0.2910 - tp: 3541.0000 - fp: 281.0000 - tn: 787759.0000 - fn: 439.0000 - accuracy: 0.9058 - val_loss: 12.8252 - val_tp: 136.0000 - val_fp: 2665.0000 - val_tn: 785375.0000 - val_fn: 3844.0000 - val_accuracy: 0.0445\n",
      "\n",
      "Epoch 00164: val_accuracy did not improve from 0.05050\n",
      "Epoch 165/200\n",
      "63/63 [==============================] - 9s 137ms/step - loss: 0.2775 - tp: 3568.0000 - fp: 270.0000 - tn: 787770.0000 - fn: 412.0000 - accuracy: 0.9128 - val_loss: 13.0495 - val_tp: 116.0000 - val_fp: 2706.0000 - val_tn: 785334.0000 - val_fn: 3864.0000 - val_accuracy: 0.0364\n",
      "\n",
      "Epoch 00165: val_accuracy did not improve from 0.05050\n",
      "Epoch 166/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.2677 - tp: 3561.0000 - fp: 261.0000 - tn: 787779.0000 - fn: 419.0000 - accuracy: 0.9113 - val_loss: 12.8688 - val_tp: 139.0000 - val_fp: 2723.0000 - val_tn: 785317.0000 - val_fn: 3841.0000 - val_accuracy: 0.0430\n",
      "\n",
      "Epoch 00166: val_accuracy did not improve from 0.05050\n",
      "Epoch 167/200\n",
      "63/63 [==============================] - 12s 191ms/step - loss: 0.2524 - tp: 3599.0000 - fp: 232.0000 - tn: 787808.0000 - fn: 381.0000 - accuracy: 0.9171 - val_loss: 13.2501 - val_tp: 123.0000 - val_fp: 2713.0000 - val_tn: 785327.0000 - val_fn: 3857.0000 - val_accuracy: 0.0407\n",
      "\n",
      "Epoch 00167: val_accuracy did not improve from 0.05050\n",
      "Epoch 168/200\n",
      "63/63 [==============================] - 9s 139ms/step - loss: 0.2848 - tp: 3565.0000 - fp: 281.0000 - tn: 787759.0000 - fn: 415.0000 - accuracy: 0.9085 - val_loss: 13.2082 - val_tp: 131.0000 - val_fp: 2703.0000 - val_tn: 785337.0000 - val_fn: 3849.0000 - val_accuracy: 0.0417\n",
      "\n",
      "Epoch 00168: val_accuracy did not improve from 0.05050\n",
      "Epoch 169/200\n",
      "63/63 [==============================] - 9s 144ms/step - loss: 0.2969 - tp: 3541.0000 - fp: 288.0000 - tn: 787752.0000 - fn: 439.0000 - accuracy: 0.9050 - val_loss: 13.0158 - val_tp: 145.0000 - val_fp: 2684.0000 - val_tn: 785356.0000 - val_fn: 3835.0000 - val_accuracy: 0.0422\n",
      "\n",
      "Epoch 00169: val_accuracy did not improve from 0.05050\n",
      "Epoch 170/200\n",
      "63/63 [==============================] - 9s 137ms/step - loss: 0.2683 - tp: 3604.0000 - fp: 247.0000 - tn: 787793.0000 - fn: 376.0000 - accuracy: 0.9186 - val_loss: 13.1320 - val_tp: 131.0000 - val_fp: 2723.0000 - val_tn: 785317.0000 - val_fn: 3849.0000 - val_accuracy: 0.0397\n",
      "\n",
      "Epoch 00170: val_accuracy did not improve from 0.05050\n",
      "Epoch 171/200\n",
      "63/63 [==============================] - 8s 134ms/step - loss: 0.2660 - tp: 3587.0000 - fp: 260.0000 - tn: 787780.0000 - fn: 393.0000 - accuracy: 0.9153 - val_loss: 13.2343 - val_tp: 140.0000 - val_fp: 2730.0000 - val_tn: 785310.0000 - val_fn: 3840.0000 - val_accuracy: 0.0432\n",
      "\n",
      "Epoch 00171: val_accuracy did not improve from 0.05050\n",
      "Epoch 172/200\n",
      "63/63 [==============================] - 9s 139ms/step - loss: 0.2763 - tp: 3566.0000 - fp: 278.0000 - tn: 787762.0000 - fn: 414.0000 - accuracy: 0.9101 - val_loss: 13.1479 - val_tp: 135.0000 - val_fp: 2725.0000 - val_tn: 785315.0000 - val_fn: 3845.0000 - val_accuracy: 0.0412\n",
      "\n",
      "Epoch 00172: val_accuracy did not improve from 0.05050\n",
      "Epoch 173/200\n",
      "63/63 [==============================] - 11s 171ms/step - loss: 0.2558 - tp: 3623.0000 - fp: 242.0000 - tn: 787798.0000 - fn: 357.0000 - accuracy: 0.9234 - val_loss: 13.1706 - val_tp: 137.0000 - val_fp: 2710.0000 - val_tn: 785330.0000 - val_fn: 3843.0000 - val_accuracy: 0.0442\n",
      "\n",
      "Epoch 00173: val_accuracy did not improve from 0.05050\n",
      "Epoch 174/200\n",
      "63/63 [==============================] - 9s 140ms/step - loss: 0.2848 - tp: 3559.0000 - fp: 274.0000 - tn: 787766.0000 - fn: 421.0000 - accuracy: 0.9085 - val_loss: 13.1319 - val_tp: 147.0000 - val_fp: 2722.0000 - val_tn: 785318.0000 - val_fn: 3833.0000 - val_accuracy: 0.0452\n",
      "\n",
      "Epoch 00174: val_accuracy did not improve from 0.05050\n",
      "Epoch 175/200\n",
      "63/63 [==============================] - 9s 150ms/step - loss: 0.2759 - tp: 3596.0000 - fp: 264.0000 - tn: 787776.0000 - fn: 384.0000 - accuracy: 0.9168 - val_loss: 12.9195 - val_tp: 158.0000 - val_fp: 2630.0000 - val_tn: 785410.0000 - val_fn: 3822.0000 - val_accuracy: 0.0480\n",
      "\n",
      "Epoch 00175: val_accuracy did not improve from 0.05050\n",
      "Epoch 176/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.2571 - tp: 3597.0000 - fp: 250.0000 - tn: 787790.0000 - fn: 383.0000 - accuracy: 0.9156 - val_loss: 13.2407 - val_tp: 164.0000 - val_fp: 2716.0000 - val_tn: 785324.0000 - val_fn: 3816.0000 - val_accuracy: 0.0490\n",
      "\n",
      "Epoch 00176: val_accuracy did not improve from 0.05050\n",
      "Epoch 177/200\n",
      "63/63 [==============================] - 9s 136ms/step - loss: 0.2787 - tp: 3574.0000 - fp: 255.0000 - tn: 787785.0000 - fn: 406.0000 - accuracy: 0.9133 - val_loss: 13.3748 - val_tp: 135.0000 - val_fp: 2724.0000 - val_tn: 785316.0000 - val_fn: 3845.0000 - val_accuracy: 0.0415\n",
      "\n",
      "Epoch 00177: val_accuracy did not improve from 0.05050\n",
      "Epoch 178/200\n",
      "63/63 [==============================] - 9s 146ms/step - loss: 0.2696 - tp: 3594.0000 - fp: 253.0000 - tn: 787787.0000 - fn: 386.0000 - accuracy: 0.9166 - val_loss: 13.5564 - val_tp: 136.0000 - val_fp: 2803.0000 - val_tn: 785237.0000 - val_fn: 3844.0000 - val_accuracy: 0.0407\n",
      "\n",
      "Epoch 00178: val_accuracy did not improve from 0.05050\n",
      "Epoch 179/200\n",
      "63/63 [==============================] - 11s 180ms/step - loss: 0.2647 - tp: 3587.0000 - fp: 257.0000 - tn: 787783.0000 - fn: 393.0000 - accuracy: 0.9173 - val_loss: 13.3838 - val_tp: 142.0000 - val_fp: 2785.0000 - val_tn: 785255.0000 - val_fn: 3838.0000 - val_accuracy: 0.0445\n",
      "\n",
      "Epoch 00179: val_accuracy did not improve from 0.05050\n",
      "Epoch 180/200\n",
      "63/63 [==============================] - 9s 136ms/step - loss: 0.2525 - tp: 3630.0000 - fp: 259.0000 - tn: 787781.0000 - fn: 350.0000 - accuracy: 0.9201 - val_loss: 13.2778 - val_tp: 143.0000 - val_fp: 2733.0000 - val_tn: 785307.0000 - val_fn: 3837.0000 - val_accuracy: 0.0417\n",
      "\n",
      "Epoch 00180: val_accuracy did not improve from 0.05050\n",
      "Epoch 181/200\n",
      "63/63 [==============================] - 9s 142ms/step - loss: 0.2472 - tp: 3608.0000 - fp: 252.0000 - tn: 787788.0000 - fn: 372.0000 - accuracy: 0.9198 - val_loss: 13.3845 - val_tp: 143.0000 - val_fp: 2720.0000 - val_tn: 785320.0000 - val_fn: 3837.0000 - val_accuracy: 0.0440\n",
      "\n",
      "Epoch 00181: val_accuracy did not improve from 0.05050\n",
      "Epoch 182/200\n",
      "63/63 [==============================] - 8s 134ms/step - loss: 0.2495 - tp: 3625.0000 - fp: 238.0000 - tn: 787802.0000 - fn: 355.0000 - accuracy: 0.9229 - val_loss: 13.2260 - val_tp: 146.0000 - val_fp: 2767.0000 - val_tn: 785273.0000 - val_fn: 3834.0000 - val_accuracy: 0.0442\n",
      "\n",
      "Epoch 00182: val_accuracy did not improve from 0.05050\n",
      "Epoch 183/200\n",
      "63/63 [==============================] - 9s 139ms/step - loss: 0.2223 - tp: 3670.0000 - fp: 225.0000 - tn: 787815.0000 - fn: 310.0000 - accuracy: 0.9327 - val_loss: 13.4035 - val_tp: 137.0000 - val_fp: 2757.0000 - val_tn: 785283.0000 - val_fn: 3843.0000 - val_accuracy: 0.0417\n",
      "\n",
      "Epoch 00183: val_accuracy did not improve from 0.05050\n",
      "Epoch 184/200\n",
      "63/63 [==============================] - 9s 147ms/step - loss: 0.2282 - tp: 3628.0000 - fp: 232.0000 - tn: 787808.0000 - fn: 352.0000 - accuracy: 0.9249 - val_loss: 13.2530 - val_tp: 139.0000 - val_fp: 2757.0000 - val_tn: 785283.0000 - val_fn: 3841.0000 - val_accuracy: 0.0435\n",
      "\n",
      "Epoch 00184: val_accuracy did not improve from 0.05050\n",
      "Epoch 185/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.2486 - tp: 3618.0000 - fp: 246.0000 - tn: 787794.0000 - fn: 362.0000 - accuracy: 0.9206 - val_loss: 13.2277 - val_tp: 135.0000 - val_fp: 2770.0000 - val_tn: 785270.0000 - val_fn: 3845.0000 - val_accuracy: 0.0415\n",
      "\n",
      "Epoch 00185: val_accuracy did not improve from 0.05050\n",
      "Epoch 186/200\n",
      "63/63 [==============================] - 12s 187ms/step - loss: 0.2206 - tp: 3677.0000 - fp: 200.0000 - tn: 787840.0000 - fn: 303.0000 - accuracy: 0.9364 - val_loss: 13.2625 - val_tp: 147.0000 - val_fp: 2736.0000 - val_tn: 785304.0000 - val_fn: 3833.0000 - val_accuracy: 0.0455\n",
      "\n",
      "Epoch 00186: val_accuracy did not improve from 0.05050\n",
      "Epoch 187/200\n",
      "63/63 [==============================] - 9s 137ms/step - loss: 0.2493 - tp: 3606.0000 - fp: 245.0000 - tn: 787795.0000 - fn: 374.0000 - accuracy: 0.9156 - val_loss: 13.3209 - val_tp: 133.0000 - val_fp: 2724.0000 - val_tn: 785316.0000 - val_fn: 3847.0000 - val_accuracy: 0.0425\n",
      "\n",
      "Epoch 00187: val_accuracy did not improve from 0.05050\n",
      "Epoch 188/200\n",
      "63/63 [==============================] - 9s 137ms/step - loss: 0.2128 - tp: 3662.0000 - fp: 206.0000 - tn: 787834.0000 - fn: 318.0000 - accuracy: 0.9322 - val_loss: 13.5534 - val_tp: 147.0000 - val_fp: 2811.0000 - val_tn: 785229.0000 - val_fn: 3833.0000 - val_accuracy: 0.0437\n",
      "\n",
      "Epoch 00188: val_accuracy did not improve from 0.05050\n",
      "Epoch 189/200\n",
      "63/63 [==============================] - 8s 134ms/step - loss: 0.2222 - tp: 3672.0000 - fp: 212.0000 - tn: 787828.0000 - fn: 308.0000 - accuracy: 0.9339 - val_loss: 13.4785 - val_tp: 142.0000 - val_fp: 2787.0000 - val_tn: 785253.0000 - val_fn: 3838.0000 - val_accuracy: 0.0425\n",
      "\n",
      "Epoch 00189: val_accuracy did not improve from 0.05050\n",
      "Epoch 190/200\n",
      "63/63 [==============================] - 9s 141ms/step - loss: 0.2527 - tp: 3646.0000 - fp: 226.0000 - tn: 787814.0000 - fn: 334.0000 - accuracy: 0.9286 - val_loss: 13.4973 - val_tp: 129.0000 - val_fp: 2802.0000 - val_tn: 785238.0000 - val_fn: 3851.0000 - val_accuracy: 0.0397\n",
      "\n",
      "Epoch 00190: val_accuracy did not improve from 0.05050\n",
      "Epoch 191/200\n",
      "63/63 [==============================] - 9s 136ms/step - loss: 0.2629 - tp: 3597.0000 - fp: 251.0000 - tn: 787789.0000 - fn: 383.0000 - accuracy: 0.9168 - val_loss: 13.5655 - val_tp: 135.0000 - val_fp: 2793.0000 - val_tn: 785247.0000 - val_fn: 3845.0000 - val_accuracy: 0.0422\n",
      "\n",
      "Epoch 00191: val_accuracy did not improve from 0.05050\n",
      "Epoch 192/200\n",
      "63/63 [==============================] - 11s 179ms/step - loss: 0.2298 - tp: 3656.0000 - fp: 222.0000 - tn: 787818.0000 - fn: 324.0000 - accuracy: 0.9317 - val_loss: 13.6305 - val_tp: 143.0000 - val_fp: 2764.0000 - val_tn: 785276.0000 - val_fn: 3837.0000 - val_accuracy: 0.0432\n",
      "\n",
      "Epoch 00192: val_accuracy did not improve from 0.05050\n",
      "Epoch 193/200\n",
      "63/63 [==============================] - 9s 137ms/step - loss: 0.2282 - tp: 3665.0000 - fp: 217.0000 - tn: 787823.0000 - fn: 315.0000 - accuracy: 0.9317 - val_loss: 13.7642 - val_tp: 142.0000 - val_fp: 2857.0000 - val_tn: 785183.0000 - val_fn: 3838.0000 - val_accuracy: 0.0417\n",
      "\n",
      "Epoch 00193: val_accuracy did not improve from 0.05050\n",
      "Epoch 194/200\n",
      "63/63 [==============================] - 9s 138ms/step - loss: 0.2442 - tp: 3639.0000 - fp: 230.0000 - tn: 787810.0000 - fn: 341.0000 - accuracy: 0.9239 - val_loss: 13.7137 - val_tp: 135.0000 - val_fp: 2840.0000 - val_tn: 785200.0000 - val_fn: 3845.0000 - val_accuracy: 0.0422\n",
      "\n",
      "Epoch 00194: val_accuracy did not improve from 0.05050\n",
      "Epoch 195/200\n",
      "63/63 [==============================] - 9s 142ms/step - loss: 0.2558 - tp: 3623.0000 - fp: 246.0000 - tn: 787794.0000 - fn: 357.0000 - accuracy: 0.9201 - val_loss: 13.6437 - val_tp: 145.0000 - val_fp: 2851.0000 - val_tn: 785189.0000 - val_fn: 3835.0000 - val_accuracy: 0.0415\n",
      "\n",
      "Epoch 00195: val_accuracy did not improve from 0.05050\n",
      "Epoch 196/200\n",
      "63/63 [==============================] - 8s 130ms/step - loss: 0.2223 - tp: 3649.0000 - fp: 222.0000 - tn: 787818.0000 - fn: 331.0000 - accuracy: 0.9294 - val_loss: 13.7563 - val_tp: 138.0000 - val_fp: 2845.0000 - val_tn: 785195.0000 - val_fn: 3842.0000 - val_accuracy: 0.0402\n",
      "\n",
      "Epoch 00196: val_accuracy did not improve from 0.05050\n",
      "Epoch 197/200\n",
      "63/63 [==============================] - 9s 134ms/step - loss: 0.2472 - tp: 3625.0000 - fp: 242.0000 - tn: 787798.0000 - fn: 355.0000 - accuracy: 0.9236 - val_loss: 13.6129 - val_tp: 139.0000 - val_fp: 2834.0000 - val_tn: 785206.0000 - val_fn: 3841.0000 - val_accuracy: 0.0427\n",
      "\n",
      "Epoch 00197: val_accuracy did not improve from 0.05050\n",
      "Epoch 198/200\n",
      "63/63 [==============================] - 11s 168ms/step - loss: 0.2477 - tp: 3622.0000 - fp: 242.0000 - tn: 787798.0000 - fn: 358.0000 - accuracy: 0.9219 - val_loss: 13.5088 - val_tp: 156.0000 - val_fp: 2786.0000 - val_tn: 785254.0000 - val_fn: 3824.0000 - val_accuracy: 0.0462\n",
      "\n",
      "Epoch 00198: val_accuracy did not improve from 0.05050\n",
      "Epoch 199/200\n",
      "63/63 [==============================] - 9s 139ms/step - loss: 0.2534 - tp: 3617.0000 - fp: 244.0000 - tn: 787796.0000 - fn: 363.0000 - accuracy: 0.9221 - val_loss: 13.6217 - val_tp: 149.0000 - val_fp: 2801.0000 - val_tn: 785239.0000 - val_fn: 3831.0000 - val_accuracy: 0.0445\n",
      "\n",
      "Epoch 00199: val_accuracy did not improve from 0.05050\n",
      "Epoch 200/200\n",
      "63/63 [==============================] - 8s 134ms/step - loss: 0.2630 - tp: 3633.0000 - fp: 236.0000 - tn: 787804.0000 - fn: 347.0000 - accuracy: 0.9239 - val_loss: 13.4620 - val_tp: 148.0000 - val_fp: 2831.0000 - val_tn: 785209.0000 - val_fn: 3832.0000 - val_accuracy: 0.0440\n",
      "\n",
      "Epoch 00200: val_accuracy did not improve from 0.05050\n"
     ]
    }
   ],
   "source": [
    "epochs = 200\n",
    "history = model.fit(\n",
    "    training_dataset,\n",
    "    validation_data=validation_dataset,\n",
    "    epochs=epochs,\n",
    "    callbacks=[checkpoint_callback]\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "lesbian-nevada",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:36:36.410303Z",
     "iopub.status.busy": "2021-06-14T20:36:36.402664Z",
     "iopub.status.idle": "2021-06-14T20:36:36.540956Z",
     "shell.execute_reply": "2021-06-14T20:36:36.541388Z"
    },
    "papermill": {
     "duration": 3.574304,
     "end_time": "2021-06-14T20:36:36.541535",
     "exception": false,
     "start_time": "2021-06-14T20:36:32.967231",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<tensorflow.python.training.tracking.util.CheckpointLoadStatus at 0x7fcf71b44510>"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.load_weights(\"./checkpoints/checkpoint.ckpt\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "attempted-composer",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:36:44.211349Z",
     "iopub.status.busy": "2021-06-14T20:36:44.210483Z",
     "iopub.status.idle": "2021-06-14T20:36:47.218747Z",
     "shell.execute_reply": "2021-06-14T20:36:47.219294Z"
    },
    "papermill": {
     "duration": 7.233456,
     "end_time": "2021-06-14T20:36:47.219487",
     "exception": false,
     "start_time": "2021-06-14T20:36:39.986031",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "63/63 [==============================] - 2s 29ms/step - loss: 12.5442 - tp: 158.0000 - fp: 2562.0000 - tn: 785478.0000 - fn: 3822.0000 - accuracy: 0.0505\n",
      "Loss:  12.544248580932617\n",
      "Accuracy:  [158.0, 2562.0, 785478.0, 3822.0, 0.050502512603998184]\n"
     ]
    }
   ],
   "source": [
    "# evaluate\n",
    "loss, *validation_metrics = model.evaluate(validation_dataset)\n",
    "\n",
    "print(\"Loss: \", loss)\n",
    "print(\"Accuracy: \", validation_metrics)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "id": "charged-brazilian",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:36:54.415450Z",
     "iopub.status.busy": "2021-06-14T20:36:54.414644Z",
     "iopub.status.idle": "2021-06-14T20:36:56.960208Z",
     "shell.execute_reply": "2021-06-14T20:36:56.959313Z"
    },
    "papermill": {
     "duration": 6.226871,
     "end_time": "2021-06-14T20:36:56.960354",
     "exception": false,
     "start_time": "2021-06-14T20:36:50.733483",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "prediction_test = model.predict(validation_dataset)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "id": "parental-basketball",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:37:03.912136Z",
     "iopub.status.busy": "2021-06-14T20:37:03.911613Z",
     "iopub.status.idle": "2021-06-14T20:37:04.152338Z",
     "shell.execute_reply": "2021-06-14T20:37:04.151879Z"
    },
    "papermill": {
     "duration": 3.71935,
     "end_time": "2021-06-14T20:37:04.152464",
     "exception": false,
     "start_time": "2021-06-14T20:37:00.433114",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [
    {
     "ename": "NameError",
     "evalue": "name 'element' is not defined",
     "output_type": "error",
     "traceback": [
      "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m                                 Traceback (most recent call last)",
      "\u001b[0;32m<ipython-input-17-66a527fbd9ca>\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[1;32m      1\u001b[0m \u001b[0;31m#for element in prediction_test:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m      2\u001b[0m \u001b[0;31m#    print(element)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m----> 3\u001b[0;31m \u001b[0mprint\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0melement\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;36m0\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m",
      "\u001b[0;31mNameError\u001b[0m: name 'element' is not defined"
     ]
    }
   ],
   "source": [
    "#for element in prediction_test:\n",
    "#    print(element)\n",
    "print(element[0])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "mineral-capture",
   "metadata": {
    "papermill": {
     "duration": 3.440987,
     "end_time": "2021-06-14T20:37:11.394466",
     "exception": false,
     "start_time": "2021-06-14T20:37:07.953479",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": []
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "tired-suicide",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:37:18.914647Z",
     "iopub.status.busy": "2021-06-14T20:37:18.894055Z",
     "iopub.status.idle": "2021-06-14T20:37:31.768468Z",
     "shell.execute_reply": "2021-06-14T20:37:31.773748Z"
    },
    "papermill": {
     "duration": 16.51308,
     "end_time": "2021-06-14T20:37:31.773911",
     "exception": false,
     "start_time": "2021-06-14T20:37:15.260831",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# save the model:\n",
    "model.save_weights('./checkpoints/final_checkpoint.ckpt')\n",
    "model.save_weights('./checkpoints/final_checkpoint.h5')\n",
    "model.save('./checkpoints/model.h5')\n",
    "tf.saved_model.save(model, \"./model\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "primary-conditions",
   "metadata": {
    "execution": {
     "iopub.execute_input": "2021-06-14T20:37:38.908474Z",
     "iopub.status.busy": "2021-06-14T20:37:38.907140Z",
     "iopub.status.idle": "2021-06-14T20:37:45.070638Z",
     "shell.execute_reply": "2021-06-14T20:37:45.072001Z"
    },
    "papermill": {
     "duration": 9.852756,
     "end_time": "2021-06-14T20:37:45.072239",
     "exception": false,
     "start_time": "2021-06-14T20:37:35.219483",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": [
    "# convert to tflite\n",
    "converter = tf.lite.TFLiteConverter.from_saved_model(\"./model\")\n",
    "tflite_model = converter.convert()\n",
    "with open('./model.tflite', 'wb') as f:\n",
    "    f.write(tflite_model)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "crude-captain",
   "metadata": {
    "papermill": {
     "duration": 3.70924,
     "end_time": "2021-06-14T20:37:52.211934",
     "exception": false,
     "start_time": "2021-06-14T20:37:48.502694",
     "status": "completed"
    },
    "tags": []
   },
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.10"
  },
  "papermill": {
   "default_parameters": {},
   "duration": 2284.669116,
   "end_time": "2021-06-14T20:37:57.915473",
   "environment_variables": {},
   "exception": null,
   "input_path": "__notebook__.ipynb",
   "output_path": "__notebook__.ipynb",
   "parameters": {},
   "start_time": "2021-06-14T19:59:53.246357",
   "version": "2.3.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
